Je me demandais s'il y avait un moyen, en sélectionnant un élément avec un JList, de laisser le programme exécuter du code. Ce code doit être exécuté chaque fois qu'un nouvel élément est sélectionné.Sélection d'élément JList
Auparavant, j'avais ajouté un écouteur. Voici un exemple minimal que j'ai fait.
public class Driver {
public static void main(String[] args) {
JFrame frame = new ListFrame();
frame.setVisible(true);
frame.setSize(200,100);
}
}
public class ListFrame extends JFrame {
private JList<String> list;
private JScrollPane scrollPane;
private String[] data = {"A","B","C"};
private JButton addButton = new JButton("Add");
public ListFrame() {
setLayout(new BorderLayout());
list = new JList<String>(data);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane = new JScrollPane(list);
add(scrollPane, BorderLayout.CENTER);
add(addButton, BorderLayout.SOUTH);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String newEntry = JOptionPane.showInputDialog("Add new entry.");
String[] tempData = new String[data.length + 1];
for(int i = 0; i < data.length; i++)
tempData[i] = data[i];
tempData[data.length] = newEntry;
data = tempData;
list = new JList<String>(data);
scrollPane.setViewportView(list);
}
});
list.addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
System.out.println("Hi");
}
});
}
}
Cependant, lorsque je clique sur un élément de la liste J, rien n'est imprimé.
Google il mon pote. Vous obtiendrez des tonnes de liens –
Voir [Comment écrire un List List Listener] (http://docs.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html) et [Comment utiliser les listes] (http: //docs.oracle.com/javase/tutorial/uiswing/components/list.html) pour plus de détails – MadProgrammer
J'ai mis à jour ma question avec des informations supplémentaires. J'ai déjà essayé l'écouteur de sélection de liste. – Halbort