2

私は Java の初心者で、別の JPanel を含むタブを持つ JFrame を作成したいと考えています。あるパネルには、別のパネルで選択したものを表示するリストがあるため、このパネルには、別のパネルで選択したもののリストを常に表示したいと思います (それが理にかなっていることを願っています)。これを行うには、JList を更新するメソッドを作成する必要があります。これは私が得た最も遠いものです:

public class PanelClass extends JPanel {
    private JList list;
    private DefaultListModel listModel = new DefaultListModel();
    private ArrayList<SomeOtherClass> objectArray = new ArrayList<SomeOtherClass>();

    public PanelClass() {
        list.setModel(listModel);
    }

    public void refresh() {
        updateListModel();
        list.setModel(listModel);
    }

    public void updateListModel() {
        if (objectArray.isEmpty()) {
            System.out.println("No Objects In Array!");
        } else {
            listModel.clear();
            for (SomeOtherClass SOC : objectArray) {
                // SOC.getName() just returns a string
                listModel.addElement(SOC.getName());
            }
        }
    }

    public void addObjectToArray(SomeOtherClass SOC) {
        objectArray.add(SOC);
    }
}

JListを常に最新の状態に保つための「リフレッシュ」メソッドの作成方法を教えてください。

4

2 に答える 2

0

あなたは2つの方法でそれを行うことができます.
まず: 無限スレッド ループに記述して、JList を常に更新するようにします。
2 番目: 新しいオブジェクトが ArrayList に追加さrefresh()れるたびにメソッドを呼び出すことができます。これは、ArrayList に何らかの変更がある場合にのみ、最終的に refresh メソッドを呼び出すメソッドからメソッドをSOC呼び出すことができることを意味します。refresh()addObjectToArray()

参考:私は自分のプロジェクトでそれを行い、2番目のオプションを選択しました。

于 2013-08-29T04:07:10.523 に答える