从 Java 中的 JList 中获取选定的值
Get the selected values from JList in Java
如何从 Jlist 中获取选定的值?
我尝试了以下代码,但所有变量都显示为空。
为什么索引变量为空?
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);
}
}
这不是答案,因为它并没有真正解决所述问题。因此,我将不得不尽快删除它。我发布它是为了显示该代码的轻微变体(作为实际显示所述问题的 MCVE) to demonstrate that there is no null
seen in the output if an item in the list is selected. Well, that and to encourage you to post an MCVE 代码。
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);
}
}
最初 select 没有元素被 JList
编辑,所以如果您不 select 列表中的元素,则返回的索引将为 -1,返回的值将为 null .
尝试此代码和 select 以及列表中的元素,然后测试它是否有效:
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]));
}
此代码将获得一个值...
String myString = String.valueOf(jList1.getModel().getElementAt(jList1.getSelectedIndex());
或
String myString = String.valueOf(jList1.getSelectedValue());
如何从 Jlist 中获取选定的值? 我尝试了以下代码,但所有变量都显示为空。 为什么索引变量为空?
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);
}
}
这不是答案,因为它并没有真正解决所述问题。因此,我将不得不尽快删除它。我发布它是为了显示该代码的轻微变体(作为实际显示所述问题的 MCVE) to demonstrate that there is no null
seen in the output if an item in the list is selected. Well, that and to encourage you to post an MCVE 代码。
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);
}
}
最初 select 没有元素被 JList
编辑,所以如果您不 select 列表中的元素,则返回的索引将为 -1,返回的值将为 null .
尝试此代码和 select 以及列表中的元素,然后测试它是否有效:
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]));
}
此代码将获得一个值...
String myString = String.valueOf(jList1.getModel().getElementAt(jList1.getSelectedIndex());
或
String myString = String.valueOf(jList1.getSelectedValue());