How can i get the selected value from Jlist? I tried the following code, but all variables are displayed null. Why index variable is null?
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);
}
}
Initially no element is selected in JList
so if you don't select an element from the list the returned index will be -1 and returned value will be null. try this code and select and element from the list then test if it works:
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);
}
}
}
This is not an answer, since it does not really address the stated problem. As such I'll have to delete it soon. I am posting it to show a slight variant of that code (as an 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 of code that actually shows the stated problem.
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);
}
}
This code will get more than one selected values...
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]));
}
this code will get one value...
String myString = String.valueOf(jList1.getModel().getElementAt(jList1.getSelectedIndex());
or
String myString = String.valueOf(jList1.getSelectedValue());
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.