В моей программе у меня есть jList, и я могу добавлять, удалять, изменять элементы в этом Jlist. Моя проблема в том, что если я нажму кнопку «Добавить» перед тем, как выбрать элемент в jList, элементы внутри jList исчезнут. (только в области apeareance, потому что они на самом деле все еще находятся в jList)jList не отображает данные в конкретном случае
Если до этого я выбираю элемент в своем списке, тогда все работает нормально. Поэтому я предполагаю, что метод valueChanged() от моего слушателя делает то, что я сам не делаю.
Вот мой список инициализации, который я называю в начале программы:
public final void initList() {
jListPaiement.setModel(new MyListModel(ls.getDb().getListePaiements()));
final DecimalFormat df = new DecimalFormat("###.##");
jListPaiement.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent lse) {
MoyenPaiement mp = (MoyenPaiement) ((MyListModel) jListPaiement.getModel()).getElementAt(jListPaiement.getSelectedIndex());
jTextFieldFF.setText(df.format(mp.getFraisf()));
jTextFieldFV.setText(df.format(mp.getFraisv() * 100));
jTextFieldNomP.setText(mp.getNom());
jTextFieldFF.setVisible(true);
jTextFieldFV.setVisible(true);
jTextFieldNomP.setVisible(true);
jLabel1.setVisible(true);
jLabel6.setVisible(true);
jLabel7.setVisible(true);
jLabel8.setVisible(true);
jLabel11.setVisible(true);
jButtonSaveP.setVisible(true);
}
});
Вот код от кнопки добавления:
private void jButtonAddPActionPerformed(java.awt.event.ActionEvent evt) {
MoyenPaiement mp = new MoyenPaiement("Nouveau", 0, 0);
((MyListModel) jListPaiement.getModel()).addElement(mp);
jListPaiement.setSelectedValue(mp, true);
jListPaiement.repaint();
}
MyListModel код:
public class MyListModel extends AbstractListModel {
ArrayList list;
public MyListModel(ArrayList list) {
this.list = list;
}
@Override
public int getSize() {
return list.size();
}
@Override
public Object getElementAt(int i) {
return list.get(i);
}
public void addElement(Object o){
list.add(o);
}
public void deleteElement(Object o){
list.remove(o);
}
public void setElement(int i,Object o){
list.set(i, o);
}
public ArrayList getList() {
return list;
}
public void setList(ArrayList list) {
this.list = list;
}
}
Любая помощь будет принята с благодарностью.
Благодаря
Edit: После дальнейших исследований, проблема в том, когда я добавить элемент в моей модели.
Он приходит ровно на линии:
((MyListModel) jListPaiement.getModel()).addElement(mp);
Даже если добавить простую строку, такие как:
((MyListModel) jListPaiement.getModel()).addElement("String");
проблема все еще происходит.
вы можете обеспечить лучший пример кода? Я не вижу, где вы инициализируете 'jButtonSaveP' или как вы используете' jButtonAddPActionPerformed' –
Реализация 'MyListModel' может представлять интерес, поскольку это может помешать вашему списку, например. не предоставлять правильные элементы при перекраске. – Thomas
Я использую интерфейс дизайна netbeans, чтобы сделать мой графический интерфейс, поэтому мои кнопки инициализируются автоматически в 'initComponent()'. 'jButtonSaveP' - это кнопка, которую я использую для сохранения моего редактирования. Это не моя кнопка добавления и использование этой кнопки или нет, не имеет значения для моей проблемы. 'jButtonAddPActionPerformed' используется, когда я нажимаю на свою кнопку. Не уверен, что вы имеете в виду здесь, извините. ' jButtonAddPActionPerformed' – Jeremy