Bonjour,
Un exemple :
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
JButton addBtn = new JButton("Ajouter");
addBtn.setBounds(40, 30, 100, 30);
frame.add(addBtn);
JButton delBtn = new JButton("Supprimer");
delBtn.setBounds(40, 80, 100, 30);
frame.add(delBtn);
// ------------------------------------------------
addBtn.setEnabled(true);
delBtn.setEnabled(false);
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addBtn.setEnabled(false);
delBtn.setEnabled(true);
}
});
delBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addBtn.setEnabled(true);
delBtn.setEnabled(false);
}
});
// ------------------------------------------------
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Remarque : il y a pas mal de code à faire avec les setEnabled et permuter les true ou false et c'est facile de se tromper, on pourrait découper le code et faire un Listener qui gère la permutation.
Exemple :
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
public class SwitchEnabledListener implements ActionListener {
private final Component comp1;
private final Component comp2;
private boolean state;
private SwitchEnabledListener(Component comp1, Component comp2) {
this.comp1 = comp1;
this.comp2 = comp2;
state = true;
switchComponents();
}
private void switchComponents() {
comp1.setEnabled(state);
comp2.setEnabled(!state);
state = !state;
}
@Override
public void actionPerformed(ActionEvent e) {
switchComponents();
}
public static void addSwitchEnabledListener(AbstractButton btn1, AbstractButton btn2) {
ActionListener listener = new SwitchEnabledListener(btn1, btn2);
btn1.addActionListener(listener);
btn2.addActionListener(listener);
}
}
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
JButton addBtn = new JButton("Ajouter");
addBtn.setBounds(40, 30, 100, 30);
frame.add(addBtn);
JButton delBtn = new JButton("Supprimer");
delBtn.setBounds(40, 80, 100, 30);
frame.add(delBtn);
// ------------------------------------------------
SwitchEnabledListener.addSwitchEnabledListener(addBtn, delBtn);
// ------------------------------------------------
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
14 sept. 2015 à 00:30
j'apprécie le code. Je l'ai testé et je pense pouvoir en faire bon usage. Seulement j'aurais souhaité que les 2 boutons soient empilés l'un sur l'autre et non séparés.