私はいくつかのIDを表示しているJList
を持っています。ユーザーがクリックしたIDをキャプチャし、JLabel
に表示します。
String selected = jlist.getSelectedItem().toString();
上記のコードは、選択したJList
値を提供します。ただし、このコードはボタンイベント内に配置する必要があります。ボタンをクリックすると、JList値が取得され、JLabel
に割り当てられます。
しかし、ユーザーがJList
のアイテムをクリックしてJLabel
をリアルタイムで更新するとすぐに、私がやりたいことは。 (ボタンをクリックしてアクションを起動する必要はありません)
簡単な例は、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();
}
}
ListSelectionListener
にJList
を付けて、上記のコードを追加してみませんか。
私はあなたの質問に基づいて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();
}
}
});
ListSelectionListener
を使用します。
JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (!evt.getValueIsAdjusting()) {
// code here
}
}
});