Salut,
Je ne vois pas bien à quel niveau tu bloques.
Pour ce qui est de la récupération d'un texte issue d'un JTextField, il suffit bien d'appeler la méthode getText() de ce dernier.
Quant à l'ajout/modification/suppression d'un élément d'une JList il faut passer par son model.
Voir l'exemple ci-après:
L'exemple doit être compilé avec un jdk >= 1.8
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* zone de texte */
JTextField text = new JTextField();
/* liste et model */
DefaultListModel<String> listModel = new DefaultListModel<String>();
JList<String> list = new JList<>(listModel);
/* Récupérable également comme suit */
/* DefaultListModel<String> listModel = (DefaultListModel<String>)list.getModel(); */
/* boutons */
JButton buttonAdd = new JButton("Add");/* Bouton pour l'ajout du texte dans la liste. */
JButton buttonModify = new JButton("Modify");/* Bouton pour modifier l'élément sélectionné */
JButton buttonRemove = new JButton("Remove");/* Bouton pour effacer l'élément sélectionné */
JButton buttonClear = new JButton("Clear");/* Bouton pour effacer la liste */
/* actions */
ActionListener al = (e) -> {
if(e.getSource().equals(buttonAdd)) { /* Ajout */
String t = text.getText();
if(t.trim().isEmpty()) {
JOptionPane.showMessageDialog(frame, "Please enter a text to insert");
return;
}
listModel.addElement(t);
} else if(e.getSource().equals(buttonModify)) { /* Modification */
int idx = list.getSelectedIndex();
if(idx == -1) {
JOptionPane.showMessageDialog(frame, "Invalid index");
return;
}
/* Récupération de la valeur. */
String t = listModel.get(idx);
/* Prompt pour la nouvelle valeur. */
t = JOptionPane.showInputDialog(frame, "New value", t);
if(t.trim().isEmpty()) {
JOptionPane.showMessageDialog(frame, "Please enter a text to insert");
return;
}
/* Modification de la valeur. */
listModel.set(idx, t);
} else if(e.getSource().equals(buttonRemove)) { /* Suppression */
int idx = list.getSelectedIndex();
if(idx == -1) {
JOptionPane.showMessageDialog(frame, "Invalid index");
return;
}
listModel.removeElementAt(idx);
} else if(e.getSource().equals(buttonClear)) { /* Effacement */
listModel.clear();
}
};
buttonAdd.addActionListener(al);
buttonModify.addActionListener(al);
buttonRemove.addActionListener(al);
buttonClear.addActionListener(al);
/* placement des composants */
JPanel content = (JPanel)frame.getContentPane();
content.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 4;
content.add(text, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
content.add(buttonAdd, c);
c.gridx = 1;
c.gridy = 1;
content.add(buttonModify, c);
c.gridx = 2;
c.gridy = 1;
content.add(buttonRemove, c);
c.gridx = 3;
c.gridy = 1;
content.add(buttonClear, c);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 4;
content.add(new JScrollPane(list), c);
/* Mise en forme de la fenêtre (taille + position à l'écran + affichage)*/
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
Ça c'est pour le problème, maintenant je ne sais pas si tu suis l'actu au niveau des API java mais Oracle recommande fortement d'utiliser JavaFX en lieu et place de Swing (Source).
22 août 2018 à 11:22
De problème. Encore Mercie beaucoup