J'essaye de créer un programme simple qui prend l'entrée dans un JTextArea et le place ensuite dans un JList (quand enter est pressé avec JTextArea focalisé). Le problème est que pendant que le texte est enregistré dans ArrayList dans la classe Model, il n'est pas visible dans le JList. Une solution serait grandement appréciée.Comment apporter des modifications au modèle show dans JList
Classe principale:
public class Main {
public static void main(String[] args) {
Model model = new Model();
JFrame frame = new JFrame();
JPanel panel = new JPanel(new BorderLayout());
JTextField text = new JTextField();
JList list = new JList(model);
JScrollPane scroll = new JScrollPane(list);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(panel);
panel.add(scroll, BorderLayout.CENTER);
panel.add(text, BorderLayout.PAGE_END);
text.setText("Enter Text");
frame.setVisible(true);
text.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.add(text.getText());
}
});
Modèle Classe:
public class Model extends AbstractListModel{
List<String> list = new ArrayList<>();
@Override
public int getSize() {
return list.size();
}
@Override
public Object getElementAt(int index) {
return list.get(index);
}
@Override
public void addListDataListener(ListDataListener l) { }
@Override
public void removeListDataListener(ListDataListener l) { }
public void add(String x){
int size = list.size();
list.add(size, x);
fireIntervalAdded(this, size, size);
}
void remove(int index) {
list.remove(index);
fireIntervalRemoved(this, index, index);
}
J'ai entendu dire que l'utilisation des méthodes et fireIntervalAdded fireIntervalRemoved fixerait mon problème, mais ce n'est pas le cas. Peut-être que je ne les utilise pas correctement?
.................. bonjour? S'il vous plaît laissez-nous savoir si la réponse a aidé/résolu votre problème. –
Pourquoi créez-vous un ListModel personnalisé? Utilisez simplement le DefaultListModel. – camickr