1

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 には、最初のテスト「シーン」のみが表示されます (上記のコードで確認できます)。

4

1 に答える 1