如何在不使用按钮的情况下 select JList 中的项目?
How to select an item from a JList without using a button?
我一直在制作一个程序,其中一部分是能够从 JList
中选择一个项目并让它在 JLabel
中显示一个特定的图标。我已经让它工作,以便用户必须 select 列表中的项目,然后按一个按钮来启动操作。
我只是想知道是否有任何方法可以使按钮不再需要?换句话说,用户只需单击列表项,它就会立即启动操作。
JList JavaDoc 中有这个很棒的资源。
这是我的代码:
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());
}
});
所以您实际做的是 "plug" 一个 ListSelectionListener 到您的 JList,以便可以通知 JList 发生的任何事件。在 valueChanged
中添加当用户 select JList 中的某些内容时需要执行的代码。
我一直在制作一个程序,其中一部分是能够从 JList
中选择一个项目并让它在 JLabel
中显示一个特定的图标。我已经让它工作,以便用户必须 select 列表中的项目,然后按一个按钮来启动操作。
我只是想知道是否有任何方法可以使按钮不再需要?换句话说,用户只需单击列表项,它就会立即启动操作。
JList JavaDoc 中有这个很棒的资源。
这是我的代码:
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());
}
});
所以您实际做的是 "plug" 一个 ListSelectionListener 到您的 JList,以便可以通知 JList 发生的任何事件。在 valueChanged
中添加当用户 select JList 中的某些内容时需要执行的代码。