0

私は2つJListのコンポーネントを持っています。からアイテムをクリックするとJList AJList Bが入力されます。

どちらも、JList同じレコードのセットが表示されます。(ただし、でアイテムをクリックするとJList A、そのアイテムはに表示されないはずですJList B)。これどうやってするの?

私の働き:

listA.addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent evt) {
        if (evt.getValueIsAdjusting()==false) {             
            listB.setModel(new AbstractListModel() {
                public int getSize() {
                    return allAnimals("Lions").size();
                }
                public Object getElementAt(int index) {
                    return allAnimals("Lions").keySet().toArray()[index];
                }
        });

JLIst Aしかし、からクリックしたアイテムを削除できませんJList B。どうすればこれを可能にできますか?

上記のコードによると、をクリックするとJList A、すべてのアイテムがに表示されJList Bます。で選択したものを除くすべての項目を表示する必要がありますJList A。これどうやってするの?

メソッドの署名allAnimals();

public Map<String, Animal> allAnimals(String animalName);
4

1 に答える 1

2

つまり、私が理解したのは、JListのコンテンツを更新したいだけだということです。以前に行った方法は、DefaultListModelを作成し、それをJListに割り当てることです。

DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);

そこから、リストモデルに要素を追加または削除することができ、JListは自動的に更新されます。

//add new element to the listmodel
listModel.add(/*index*/ 0, /*random object content*/ "Lions");

//remove specific element
listModel.remove(0);

//remove specific object
listModel.removeElement(someObject);

//remove all elements
listModel.removeAllElements();

それがあなたの質問に答えたことを願っています。

于 2012-12-12T16:16:18.007 に答える