SingleFrameApplication - ActionMap

hesk

Erfahrenes Mitglied
Hallo!

Ich definiere 2 Buttons

Code:
JButton button1 = new JButton();
button1.setAction( actionMap.get("button1") );
JButton button2 = new JButton();
button2.setAction( actionMap.get("button2") );

In den properties kann ich ihnen nun einen Text zuweisen

Code:
button1.Action.text = Das ist Button1
button2.Action.text = Das ist Button2

Jetzt sollen die zwei Buttons aber das selbe machen.

Muss ich jetzt wirklich für jeden Button eine eigene Action machen die das selbe tut?

Code:
@Action
public void button1()
{
 ... something ...
}
Das selbe für Button2

Oder gibt es eine Möglichkeit dass beide Buttons das selbe machen, aber unterschiedlich heißen?

Vielen Dank!
 
Zuletzt bearbeitet:
Das ist eigentlich gar nicht schwer, aber leicht zu übersehen.
Du musst doch lediglich die Action von Button1 auch Button2 zuweißen, sprich:

Code:
JButton button1 = new JButton();
button1.setAction( actionMap.get("button1") );
JButton button2 = new JButton();
button2.setAction( actionMap.get("button1") ); // <-- Hier auch button1 angeben

Und das müsste es doch dann eigentlich schon gewesen sein. ;)
 
Dann haben beide die selbe Action, aber sie haben auch beide den selben Namen.
Also in der GUI sind dann zwei Buttons die beide "Button1" heißen.

Sie sollen aber unterschiedlichen Namen haben.
 
Hab eine Lösung gefunden:

Code:
ActionMap actionMap = Application.getInstance().getContext().getActionMap( getClass(), this );
            
            JButton button1 = new JButton();
            button1.setAction( actionMap.get( "open") );
            button1.setName( "open1");
            JButton button2 = new JButton();
            button2.setAction( actionMap.get( "open") );
            button2.setName( "open2");
            
            JPanel jpanel = new JPanel();
            jpanel.add( button1 );
            jpanel.add( button2) ;
            this.getFrame().add( jpanel );

Code:
@Action(name="open")
    public void irgendEinName( ActionEvent av)
    {
        System.out.println("in open-Action");
        System.out.println(av.getActionCommand());
    }

Code:
open1.text = Button1
open2.text = Button2
 
Zurück