AbstractListModel を拡張する TestListModel があります
public class TestListModel extends AbstractListModel {
List<Test> testlist = new ArrayList<Test>();
public Object getElementAt(int arg0) {
return testlist.get(arg0);
}
public int getSize() {
return testlist.size();
}
public void add(Test t) {
System.out.println("adding");
testlist.add(t);
System.out.println(testlist.toString());
}
public void remove(Test t) {
testlist.remove(t);
}
}
私はそのようなJListを持っています
final TestListModel listModel = new TestListModel();
listModel.add(new Test("test", "scen"));
JPanel panel = new JPanel();
final JList list = new JList(listModel);
panel.add(list);
list.setVisibleRowCount(3);
list.setFont(new Font("Tahoma", Font.PLAIN, 14));
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBounds(0, 0, 100, 400);
アクションリスターを持つ追加ボタンもあります
public void actionPerformed(ActionEvent arg0) {
final JFileChooser fc = new JFileChooser();fc.setCurrentDirectory(new
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = fc.showOpenDialog(frmAtt);
if(returnVal == JFileChooser.APPROVE_OPTION) {
listModel.add(getTest(fc.getSelectedFile().toString()));
}
}
ボタンを使用して別のテストを追加すると、ArrayList が更新されているように見えますが、GUI にはこの変更が反映されません。JList は完全に空白に見えます。モデル内のすべてのテストが表示されているはずです。
リストに手動で追加した JList には、最初のテスト「シーン」のみが表示されます (上記のコードで確認できます)。