Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

04 - Actions Actions. 04 - Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.

Ähnliche Präsentationen


Präsentation zum Thema: "04 - Actions Actions. 04 - Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden."—  Präsentation transkript:

1 04 - Actions Actions

2 04 - Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch MenuItems, Buttons, Textfelder, Comboboxen Das Erscheinungsbild dieser Komponenten ähnelt sich häufig. Es werden gleiche Beschriftungen und Icons verwendet. Es werden gleiche ToolTip-Texte und Mnemonic und Accelerator Keys verwendet. Die Komponente sind alle gleichzeitig zu aktivieren bzw. zu deaktivieren. Es ist zweckmäßig die Realisierung der Aktion sowie das Erscheinungsbild der Swing-Komponenten an einer Stelle zu zentralisieren. Interface Action und abstrakte Klasse AbstractAction

3 04 - Actions 3 Das Interface Action Das Interface Action ist abgeleitet vom Interface ActionListener und erbt damit die Methode public void actionPerformed (ActionEvent e) Bei einer Swing-Komponente wird ein Action-Object mit der Methode public void setAction(Action a) registriert. Das selbe Action-Objekt kann bei verschiedenen Komponenten registriert werden. Mit den Methoden public boolean isEnabled() bzw. public void setEnabled(boolean b) des Action-Interfaces wird der Status aller Komponenten bei dem das Action-Objekt registriert ist abgefragt bzw. modifiziert.

4 04 - Actions 4 Die Methoden public Object getValue(String key) bzw. public void putValue(String key, Object value) fragen den Wert einer Eigenschaft ab bzw. modifizieren diesen. Folgende Schlüssel sind definiert: NAME : entspricht setText(…) SHORT_DESCRIPTION : entspricht setToolTipText()…) LONG_DESCRIPTION : Text für Online-Helps SMALL_ICON : entspricht setIcon(…) ACTION_COMMAND_KEY : entspricht setActionCommand(…) ACCELERATOR_KEY : entspricht setAcceleratorKey(…) MNEMONIC_KEY : entspricht setMnemonic(…) Anwendungsbeispiel: putValue(Action.SHORT_DESCRIPTION, "Action");

5 04 - Actions 5 JButtonJMenuItemJCheckBoxJRadioButtonJTextFieldJComboBox NAME XXXX SHORT_DESCRIPTION XXXXX LONG_DESCRIPTION SMALL_ICON XX ACTION_COMMAND_KEY ACCELERATOR_KEY MNEMONIC_KEY X

6 04 - Actions 6 Die abstrakte Klasse AbstractAction Die abstrakte Klasse AbstractAction implementiert alle Methoden des Interfaces Action außer der Methode actionPerformed, die vom Interface ActionListener geerbt wird. Die einfachste Variante der Nutzung ist das Ableiten einer Klasse, die die Methode actionPerformed implementiert. Die Nutzung ist also genauso einfach wie die Nutzung des Interfaces ActionListener.

7 04 - Actions 7 Beispiel TestAction import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestActions { public static Action act = new AbstractAction("Action Component", new mageIcon("action.gif")){ { putValue(Action.SHORT_DESCRIPTION, "Action ToolTipText"); } public void actionPerformed(ActionEvent e) { String src = e.getSource().getClass().getName(); if (src.equals("javax.swing.JComboBox")) { JComboBox cb = (JComboBox)(e.getSource()); if ( !cb.getSelectedItem().equals(getValue(Action.NAME)) ) return; } System.out.println("Action ausgelöst von "+src); } };

8 04 - Actions 8 public static void main(String[] args) { JFrame fr = new JFrame("TestActions"); JMenuBar mb = new JMenuBar(); fr.setJMenuBar(mb); JMenu m = new JMenu("test"); mb.add(m); JMenuItem mi = new JMenuItem(); mi.setAction(act); m.add(mi); Container cp = fr.getContentPane(); cp.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor=GridBagConstraints.WEST; gbc.insets=new Insets(10, 10, 10, 10); gbc.gridx=0; cp.add(new JLabel("JButton"), gbc); JButton jb = new JButton(); jb.setAction(act); gbc.gridx=1; cp.add(jb, gbc);

9 04 - Actions 9 gbc.gridx=0; cp.add(new JLabel("JComboBox"), gbc); final JComboBox co = new JComboBox(new Object [] {"Zeile1", "Zeile2", act.getValue(Action.NAME), "Zeile4", "Zeile5"} ); co.setAction(act); gbc.gridx=1; gbc.fill=GridBagConstraints.HORIZONTAL; cp.add(co, gbc); gbc.gridx=0; gbc.gridwidth=2; final JButton activateButton = new JButton("disable"); activateButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ activateButton.setText(act.isEnabled()?"enable":"disable"); act.setEnabled(!act.isEnabled()); } }); cp.add(activateButton, gbc);

10 04 - Actions 10 gbc.gridx=0; cp.add(new JLabel("setToolTipText"), gbc); final JTextField tt = new JTextField(); tt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { act.putValue(Action.SHORT_DESCRIPTION, tt.getText()); } }); gbc.gridx=1; cp.add(tt, gbc); fr.setBounds(0, 0, 400, 400); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }


Herunterladen ppt "04 - Actions Actions. 04 - Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden."

Ähnliche Präsentationen


Google-Anzeigen