1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| public class ExempleButton extends JFrame {
public static final String COMMAND_TRUC = "TRUC";
public static final String COMMAND_MACHIN = "MACHIN";
public ExempleButton() {
JPanel panel = new JPanel(new GridBagLayout());
add(panel);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx=0;
gbc.insets=new Insets(2, 2, 2, 2);
// Utiliser un action listener propre au bouton (qui peut d'ailleurs être une classe externe, qui aurait difficilement accès aux attributs
JButton button1 = new JButton("Exemple 1");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
affiche("Exemple 1");
}
});
panel.add(button1,gbc);
// Utiliser un action listener propre au bouton, par expression lambda
JButton button2 = new JButton("Exemple 2");
button2.addActionListener(e-> affiche("Exemple 2"));
panel.add(button2,gbc);
// Utiliser la commande du bouton, ce qui permet de rendre plus indépendant l'UI des fonctionnalités propres de l'application (avec différents controleurs, les mêmes commandes peuvent faire des choses différentes)
ActionListener commandActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch( e.getActionCommand() ) {
case ExempleButton.COMMAND_TRUC:
affiche("Exemple 3");
break;
case ExempleButton.COMMAND_MACHIN:
affiche("Exemple 4");
break;
}
}
};
JButton button3 = new JButton("Exemple 3");
button3.addActionListener(commandActionListener);
button3.setActionCommand(ExempleButton.COMMAND_TRUC);
panel.add(button3,gbc);
JButton button4 = new JButton("Exemple 4");
button4.addActionListener(commandActionListener);
button4.setActionCommand(ExempleButton.COMMAND_MACHIN);
panel.add(button4,gbc);
// Utiliser des actions, voire un ActionManager, ce qui permet de gérer les actions à part, de pouvoir les réutiliser dans différents composants (dans des menus par exemple)
List<Action> actions = Arrays.asList(
new Action("Exemple 5", "Exemple 5"),
new Action("Exemple 6", "Exemple 6")
);
actions.forEach(action-> panel.add(new JButton(action),gbc));
pack();
setLocationRelativeTo(null);
}
private void affiche(String message) {
JOptionPane.showMessageDialog(this, message);
}
public class Action extends AbstractAction {
private final String message;
public Action(String text, String message) {
super(text);
this.message=message;
}
@Override
public void actionPerformed(ActionEvent e) {
affiche(message);
}
}
public static void main(String[] args) {
new ExempleButton().setVisible(true);
}
} |
Partager