16

私はJListいくつかの ID を表示している を持っています。ユーザーがクリックした ID を取得し、JLabel.

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

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

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

4

3 に答える 3

28

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();
    }

}
于 2012-12-10T12:26:57.770 に答える
9

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

あなたの質問に基づいて、JButtonでリスナーを作成する方法をすでに知っていると思います。そのため、代わりにリスナーを作成するためにそれを微調整してから、リスナーを使用ListSelectionListenerに割り当てる必要があります。JListjlist.addListSelectionListener(myListener);

ここには、開始するか、ドキュメントを参照するための優れたチュートリアルがあります。

あなたはこのようなものを目指しているべきです...

jlist.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()){
            JList source = (JList)event.getSource();
            String selected = source.getSelectedValue().toString();
        }
    }
});
于 2012-12-10T12:18:13.660 に答える
5

を使用しListSelectionListenerます:

JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
      // code here
    }
  }
});
于 2012-12-10T12:19:46.390 に答える