我一直在制作一个程序,其中一部分就是能够从JList
中选择一个项目并让它在JLabel
中显示一个特定的图标。我已经使它工作,所以用户必须从列表中选择项目,然后按一个按钮启动操作。
我只是想知道是否有任何方法可以使按钮不是必需的?换句话说,用户只需单击列表项即可立即启动操作。
答案 0 :(得分:2)
这是我的代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Example extends JFrame
{
JList list = null;
Example()
{
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
ArrayList data = new ArrayList();
data.add("Py");
data.add("Piper");
list = new JList(data.toArray());
list.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent evt)
{
// To avoid double value selected
if (evt.getValueIsAdjusting())
return;
System.out.println("Selected: " + list.getSelectedValue());
}
});
cp.add(new JScrollPane(list), BorderLayout.CENTER);
}
public static void main(String[] s)
{
Example l = new Example();
l.pack();
l.setVisible(true);
}
}
就在这里:
list.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent evt)
{
// To avoid double value selected
if (evt.getValueIsAdjusting())
return;
System.out.println("Selected: " + list.getSelectedValue());
}
});
因此,您实际上要做的是将ListSelectionListener“插入”到JList,以便可以通知JList发生的任何事件。在valueChanged
中添加代码需要在用户选择JList中的内容时执行。
答案 1 :(得分:0)
JList JavaDoc有这个很棒的资源。