web-dev-qa-db-ja.com

JListの選択されたアイテムを検索し、リアルタイムで表示する

私はいくつかのIDを表示しているJListを持っています。ユーザーがクリックしたIDをキャプチャし、JLabelに表示します。

String selected = jlist.getSelectedItem().toString();

上記のコードは、選択したJList値を提供します。ただし、このコードはボタンイベント内に配置する必要があります。ボタンをクリックすると、JList値が取得され、JLabelに割り当てられます。

しかし、ユーザーがJListのアイテムをクリックしてJLabelをリアルタイムで更新するとすぐに、私がやりたいことは。 (ボタンをクリックしてアクションを起動する必要はありません)

14
sharon Hwk

簡単な例は、listselectionlistenerを使用した以下のようになります

import Java.awt.Dimension;
import Java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListDemo extends JFrame {

    public JListDemo() {

        setSize(new Dimension(300, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        final JLabel label = new JLabel("Update");
        String[] data = { "one", "two", "three", "four" };
        final JList dataList = new JList(data);

        dataList.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent arg0) {
                if (!arg0.getValueIsAdjusting()) {
                  label.setText(dataList.getSelectedValue().toString());
                }
            }
        });
        add(dataList);
        add(label);

        setVisible(true);

    }

    public static void main(String args[]) {
        new JListDemo();
    }

}
21
Vinay

ListSelectionListenerJListを付けて、上記のコードを追加してみませんか。

私はあなたの質問に基づいてJButtonsでリスナーを作成する方法をすでに知っていると仮定しているので、代わりにListSelectionListenerを作成するように微調整し、jlist.addListSelectionListener(myListener);を使用してJListにリスナーを割り当てる必要があります

素敵なチュートリアルがあります here 開始するか、 documentation を参照してください

このようなものを目指しているはずです...

jlist.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()){
            JList source = (JList)event.getSource();
            String selected = source.getSelectedValue().toString();
        }
    }
});
8
wattostudios

ListSelectionListenerを使用します。

JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
      // code here
    }
  }
});
5
Blacklight