Modifier image JButton Dynamiquement
Bonjour,
voici mon probleme: j ai deux listes, et un bouton pour valider. Je voudrais faire en sorte que lorsque dans les deux listes, un element est selectionne, apparaisse une image sur le bouton enregistrer. J imagine que ce test, pour voir si un element est selectionne dans la liste, doit s'effectuer dans un thread.
La seule methode que j'ai pour l'instant trouver me semble etre extremement sale. Quelqu'un pourrait m'indiquer une meilleure solution ?
Merci.
Code:
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 91 92 93 94 95 96 97 98 99
| public class ListeFehlerUrsache extends JFrame {
private static final long serialVersionUID = 1L;
public input.FehlerArt fehler = null; // @jve:decl-index=0:
public input.Ursache ursache = null; // @jve:decl-index=0:
private DefaultListModel sampleModel;
private DefaultListModel ursacheModel;
private JList fehlerListe;
private JList ursacheListe; // @jve:decl-index=0:visual-constraint="10,92"
private Container content = getContentPane();
private JButton saveButton;
public ListeFehlerUrsache() {
super("Fehlerart");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(initializeFehler(), initializeUrsache(), validationButton());
SaveButtonThread saveTh = new SaveButtonThread(getListFehler(), getListUrsache(), getSaveButton());
saveTh.start();
}
private JList initializeFehler() {
fehler = new FehlerArt();
String[] entriesFehler = fehler.getFehlerArt();
sampleModel = new DefaultListModel();
for (int i = 0; i<entriesFehler.length; i++) {
sampleModel.addElement(entriesFehler[i]);
}
fehlerListe = new JList(sampleModel);
System.out.println("Size Fehler : " + fehlerListe.size());
fehlerListe.setVisibleRowCount(5);
fehlerListe.setFont(new Font("Verdana", Font.PLAIN, 25));
fehlerListe.setBackground(SystemColor.controlHighlight);
// content.add(fehlerListe);
fehlerListe.setBorder(new BevelBorder(BevelBorder.RAISED));
return fehlerListe;
// JScrollPane listPane = new JScrollPane(fehlerListe);
//return listPane;
}
private JList initializeUrsache() {
ursache = new Ursache();
String[] entriesUrsache = ursache.getUrsache();
ursacheModel = new DefaultListModel();
for (int i = 0; i<entriesUrsache.length; i++) {
ursacheModel.addElement(entriesUrsache[i]);
}
ursacheListe = new JList(ursacheModel);
System.out.println("Size ursache : " + ursacheListe.size());
ursacheListe.setVisibleRowCount(5);
ursacheListe.setFont(new Font("Verdana", Font.PLAIN, 25));
ursacheListe.setSize(new Dimension(281, 103));
ursacheListe.setBackground(SystemColor.controlHighlight);
ursacheListe.setBorder(new BevelBorder(BevelBorder.RAISED));
return ursacheListe;
// content.add(ursacheListe);
// JScrollPane listPaneUrsache = new JScrollPane(ursacheListe);
// return listPaneUrsache;
}
private void add(JList feh, JList ur, JButton save) {
content.add(feh, BorderLayout.LINE_START);
content.add(ur, BorderLayout.CENTER);
content.add(save, BorderLayout.LINE_END);
pack();
setVisible(true);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new ListeFehlerUrsache();
}
});
}
public JButton validationButton() {
// new ImageIcon("save.png")
saveButton = new JButton();
return saveButton;
}
public JList getListFehler() {
return fehlerListe;
}
public JList getListUrsache() {
return ursacheListe;
}
public JButton getSaveButton() {
return saveButton;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class SaveButtonThread extends Thread {
private JList fehler;
private JList ursache;
private JButton button;
public SaveButtonThread(JList fehler, JList ursache, JButton button) {
super();
this.fehler = fehler;
this.ursache = ursache;
this.button = button;
}
public void run() {
System.out.println("We are in the run methode" );
for(;;) {
if (fehler.getSelectedValue() != null && ursache.getSelectedValue() != null) {
button.setIcon(new ImageIcon("save.png"));
}
}
}
} |