Buttons programmtechnisch "drücken"

floggie

Mitglied
Hi,

Irgendwie finde ich keine Lösung weshalb ich mal frage.

Ich habe eine Buttongroup mit mehreren JToggleButtons. Weiterhin habe ich einen JButton der nicht in dieser Buttongroup liegt. Was ich nun möchte ist, dass bei Klick auf den JButton jeweils der nächste JToggleButton der Buttongroup gedrückt erscheint. Gedacht habe ich mit das so:

Enumeration enButt = getButtonGroup1().getElements();

if(enButt.hasMoreElements())
JToggleButton temp = enButt.nextElement();
temp.setSelected(true) oder requestFocus() oder ....

funktioniert aber alles nicht. Was mache ich falsch?

Grüsse

floggie
 
Moin!
hoffe das kleine beispiel beantwortet deine Frage:

Code:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;

import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;

public class Example implements ActionListener {
    private ButtonGroup group = null;
    
    public Example(){
        JFrame frame = new JFrame();
        frame.setContentPane(new JPanel());
        frame.setLayout(new GridLayout(4,1));
        JToggleButton one = new JToggleButton("one");
        JToggleButton two = new JToggleButton("two");
        JToggleButton three = new JToggleButton("three");
        JButton button = new JButton("press button");
        button.addActionListener(this);
        frame.setSize(300,300);
        frame.getContentPane().add(one);
        frame.getContentPane().add(two);
        frame.getContentPane().add(three);
        frame.getContentPane().add(button);
        group = new ButtonGroup(); 
        group.add(one);
        group.add(two);
        group.add(three);
        frame.setVisible(true);
        
    }
    
    
    

    public void actionPerformed(ActionEvent e) {
        Enumeration<AbstractButton> enButt = group.getElements();
        boolean selectNext= false;
        while(enButt.hasMoreElements()){
            JToggleButton toggle = (JToggleButton) enButt.nextElement();
            if(selectNext){
                toggle.setSelected(true);
                selectNext = false;
                System.out.println("selektiere nun:= "+toggle.getText()+" is selected:= "+toggle.isSelected());
            }
            else if(toggle.isSelected()){
                if(enButt.hasMoreElements())selectNext = true;
                else{
                    toggle = (JToggleButton) group.getElements().nextElement();
                    toggle.setSelected(true);
                    System.out.println("selektiere:= "+toggle.getText()+" ist selected:= "+toggle.isSelected());
                }
            }
            
        }
        
    }
    public static void main(String[] args){
        Example tmp = new Example();
    }

}
Funktioniert allerdings nur, wenn bereits ein ToggleButton selektiert wurde...


*grüssle*
MeinerEiner
 
Hi,

Erstmal vielen Dank, dennoch habe ich eine kurze Frage. Idealerweise soll beim selektieren der Buttons auch ein event ausgelöst werden, damit sich meine Anwendung verhält als wenn der selektierte Button gedrückt worden wäre. Habe das mit doClick() probiert, scheint aber nicht das richtige zu sein.

Grüsse

floggie
 
Moin!
Füge einfach jedem ToogleButton einen Actionlistener hinzu.
Dann, wenn der ToogleButton durch dich per Buttonklick selektiert wurde, rufe folgendes auf:
Code:
selectedToogleButton.fireActionPerformed(new ActionEvent(selectedToogleButton,0,selectedToggleButton.getActionCommand));"


*grüssle*
MeinerEiner
 
Zurück