从Java中的JList获取所选值
如何从Jlist获取所选值? 我尝试了以下代码,但所有变量都显示为null。 为什么索引变量为空从Java中的JList获取所选值,java,swing,actionlistener,jlist,Java,Swing,Actionlistener,Jlist,如何从Jlist获取所选值? 我尝试了以下代码,但所有变量都显示为null。 为什么索引变量为空 public class GetSelectedValueFromJList extends JFrame implements ActionListener { private JList list; private JButton checkButton; public GetSelectedValueFromJList() { String[]
public class GetSelectedValueFromJList extends JFrame implements ActionListener {
private JList list;
private JButton checkButton;
public GetSelectedValueFromJList() {
String[] nameList = { "Value 1", "Value 2", "Value 3", "Value 4", "Value 5"};
list = new JList(data);
checkButton = new Button("Check");
button.addActionListener(this);
//add list to frame
add(list);
add(checkButton);
}
public void actionPerformed(ActionEvent e)
{
if(e.getCommand().equals("Check"))
{
int index = list.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
这不是一个答案,因为它没有真正解决所述问题。因此,我将不得不很快删除它。我发布它是为了显示该代码的一个微小变体(作为一个),以证明如果列表中的某个项目被选中,则在输出中不会看到
null
。好的,这也是为了鼓励您发布一系列代码,这些代码实际上显示了所述的问题
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class GetSelectedValueFromJList
extends JFrame implements ActionListener {
private JList list;
private JButton button;
public GetSelectedValueFromJList() {
String[] nameList = {
"Value 1", "Value 2", "Value 3", "Value 4", "Value 5"
};
list = new JList(nameList);
list.setSelectedIndex(2);
button = new JButton("Check");
button.addActionListener(this);
add(list);
add(button, BorderLayout.PAGE_END);
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Check")) {
int index = list.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
new GetSelectedValueFromJList().setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
这不是一个答案,因为它没有真正解决所述问题。因此,我将不得不很快删除它。我发布它是为了显示该代码的一个微小变体(作为一个),以证明如果列表中的某个项目被选中,则在输出中不会看到
null
。好的,这也是为了鼓励您发布一系列代码,这些代码实际上显示了所述的问题
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class GetSelectedValueFromJList
extends JFrame implements ActionListener {
private JList list;
private JButton button;
public GetSelectedValueFromJList() {
String[] nameList = {
"Value 1", "Value 2", "Value 3", "Value 4", "Value 5"
};
list = new JList(nameList);
list.setSelectedIndex(2);
button = new JButton("Check");
button.addActionListener(this);
add(list);
add(button, BorderLayout.PAGE_END);
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Check")) {
int index = list.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
new GetSelectedValueFromJList().setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
最初在
JList
中未选择任何元素,因此如果不从列表中选择元素,则返回的索引将为-1,返回的值将为null。
尝试此代码并从列表中选择and元素,然后测试其是否有效:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class Frame extends JFrame implements ActionListener
{
private JList list;
private JButton checkButton;
public Frame()
{
setBounds(100,100,300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] nameList = { "Value 1", "Value 2", "Value 3", "Value 4", "Value 5" };
list = new JList(nameList);
checkButton = new JButton("Check");
checkButton.addActionListener(this);
// add list to frame
JPanel panel = new JPanel();
panel.add(list);
panel.add(checkButton);
add(panel);
setVisible(true);
}
public static void main(String[] args)
{
new Frame();
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("Check"))
{
int index = list.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
}
最初在
JList
中未选择任何元素,因此如果不从列表中选择元素,则返回的索引将为-1,返回的值将为null。
尝试此代码并从列表中选择and元素,然后测试其是否有效:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class Frame extends JFrame implements ActionListener
{
private JList list;
private JButton checkButton;
public Frame()
{
setBounds(100,100,300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] nameList = { "Value 1", "Value 2", "Value 3", "Value 4", "Value 5" };
list = new JList(nameList);
checkButton = new JButton("Check");
checkButton.addActionListener(this);
// add list to frame
JPanel panel = new JPanel();
panel.add(list);
panel.add(checkButton);
add(panel);
setVisible(true);
}
public static void main(String[] args)
{
new Frame();
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("Check"))
{
int index = list.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
}
此代码将获取多个选定值
int[] selectedIndices = jList1.getSelectedIndices();
String[] myArray = new String[50];
for (int i = 0; i < selectedIndices.length; i++) {
myArray[i] = String.valueOf(jList1.getModel().getElementAt(selectedIndices[i]));
}
或
此代码将获取多个选定值
int[] selectedIndices = jList1.getSelectedIndices();
String[] myArray = new String[50];
for (int i = 0; i < selectedIndices.length; i++) {
myArray[i] = String.valueOf(jList1.getModel().getElementAt(selectedIndices[i]));
}
或
1) 使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!2) 为了更快地获得更好的帮助,发布一个(最小完整可验证示例)或(简短、自包含、正确的示例)。
checkButton=newbutton(“Check”)代码>不要将Swing和AWT混用。使用SwingJButton
if(e.getCommand().equals(“Check”))
BTW-该代码(以及其他部分)即使完整且带有导入,也不会编译。不要发布“类似”正在使用的代码,这会浪费你的时间,以及其他试图帮助你的人的时间(免费)。复制/粘贴适当的MCVE。1)使用逻辑一致的缩进形式缩进代码行和代码块。缩进的目的是使代码的流程更易于遵循!2) 为了更快地获得更好的帮助,发布一个(最小完整可验证示例)或(简短、自包含、正确的示例)。checkButton=newbutton(“Check”)代码>不要将Swing和AWT混用。使用SwingJButton
if(e.getCommand().equals(“Check”))
BTW-该代码(以及其他部分)即使完整且带有导入,也不会编译。不要发布“类似”正在使用的代码,这会浪费你的时间,以及其他试图帮助你的人的时间(免费)。复制/粘贴正确的MCVE。对于所选的JList元素,索引为-1,所选值为null。@AdrianTrifan我测试了上面的示例,它工作正常,我认为您有另一段代码可以重置JList。“对于所选的JList元素,索引为-1,所选值为null。”然后按照我一小时前的建议发布一个可编译和可运行的示例,另外两个人已经完成了!对于所选的JList元素,索引为-1,所选值为null。@AdrianTrifan我测试了上面的示例,它工作正常,我认为您有另一段代码可以重置JList。“对于所选的JList元素,索引为-1,所选值为null。”然后按照我一小时前的建议发布一个可编译和可运行的示例,另外两个人已经完成了!