我有一个JList,我正在显示一些ID.我想捕获用户点击的ID并在其上显示JLabel.
String selected = jlist.getSelectedItem().toString();
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了我选择的JList值.但是这个代码必须放在一个按钮事件中,当我点击按钮时,它将获得JList值并将其分配给JLabel.
但是,我想要做的是,只要用户点击一个项目JList来JLabel实时更新.(无需单击按钮即可触发操作)
Vin*_*nay 22
一个简单的例子就像下面使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
你为什么不把它ListSelectionListener放在你身上JList,并将上面的代码加入其中.
我假设你已经知道如何根据你的问题在JButton上创建监听器,所以你只需要调整它来创建一个ListSelectionListener,然后将监听器分配给你的JList使用jlist.addListSelectionListener(myListener);
你应该瞄准这样的事情......
jlist.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if (!event.getValueIsAdjusting()){
JList source = (JList)event.getSource();
String selected = source.getSelectedValue().toString();
}
}
});
Run Code Online (Sandbox Code Playgroud)
使用ListSelectionListener:
JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (!evt.getValueIsAdjusting()) {
// code here
}
}
});
Run Code Online (Sandbox Code Playgroud)