package test;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import org.jdesktop.swingx.JXFrame;
public class Test extends JXFrame {
public static void main(String[] args) {
Test obj = new Test();
obj.setVisible(true);
}
JLabel labelA, labelB;
ToggleLabelA actionA;
ToggleLabelB actionB;
public Test() {
super("KeyBinding");
setDefaultCloseOperation(JXFrame.EXIT_ON_CLOSE);
actionA = new ToggleLabelA();
actionB = new ToggleLabelB();
JPanel content = new JPanel();
content.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F1"), "aaa");
content.getActionMap().put("aaa", actionA);
content.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F2"), "bbb");
content.getActionMap().put("bbb", actionB);
setContentPane(content);
initComponents();
pack();
setLocationRelativeTo(null);
}
private void initComponents() {
GridBagConstraints c = new GridBagConstraints();
setLayout(new GridBagLayout());
// ########################################################################
// Menu
// ########################################################################
JMenuBar menuBar = new JMenuBar();
menuBar.add(createFileMenu());
setJMenuBar(menuBar);
// ########################################################################
// Content
// ########################################################################
labelA = new JLabel("Hallo Welt!");
c.gridx = 0;
c.gridy = 0;
add(labelA, c);
labelB = new JLabel("Hallo Du!");
c.gridx = 0;
c.gridy = 1;
add(labelB, c);
}
// ###############################################################################################
// MENU
// ###############################################################################################
private JMenu createFileMenu() {
JMenu ret = new JMenu("File");
JMenuItem miA = new JMenuItem(actionA);
miA.setText("toggle A");
ret.add(miA);
JMenuItem miB = new JMenuItem(actionB);
miB.setText("toggle B");
ret.add(miB);
return ret;
}
// ###############################################################################################
// Action
// ###############################################################################################
class ToggleLabelA extends AbstractAction {
boolean status = true;
@Override
public void actionPerformed(ActionEvent e) {
if (status) {
labelA.setText("Hallo Mond!");
status = false;
} else {
labelA.setText("Hallo Erde!!!");
status = true;
}
}
}
class ToggleLabelB extends AbstractAction {
boolean status = true;
@Override
public void actionPerformed(ActionEvent e) {
if (status) {
labelB.setText("Hallo Sie!");
status = false;
} else {
labelB.setText("Hallo Du!!!");
status = true;
}
}
}
}