Programmation Java Swing/Actions

Une action permet de préconfigurer plusieurs propriétés. Quand un composant (JRadiobutton, JButton, JMenuItem, ...) est lié à une action, ses propriétés suivent l'évolution de celles de l'action. Notamment, cela permet de désactiver/activer une action, de configurer un listener d'action (ActionListener) une seule fois. Cela est pratique quand une même action est disponible à la fois dans un menu et par un bouton, par exemple.

Exemple pour une action de menu, ou de bouton :

// Création d'une action
// Convention : a_ pour action
Action a_ouvrir = new AbstractAction("Ouvrir un fichier...")
{
	@Override
	public void actionPerformed(ActionEvent e)
	{
		menuOuvrir();
	}
};
a_ouvrir.setAccelerator(KeyStroke.getKeyStroke(
	KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));      // Ctrl-O

// Action ajoutée au menu fichier :
JMenu m = new JMenu("Fichier");  // Fichier :
m.add(new JMenuItem(a_ouvrir));      //  - Ouvrir

// Et aussi pour un bouton directement dans la fenêtre :
JButton b_ouvrir = new JButton(a_ouvrir);

a_ouvrir.setEnabled(false); // --> désactive à la fois le menu et le bouton en un appel