Java 使用SWING在另一个面板的列表中显示选定的行索引
我有一个显示元素的列表。我希望每次从列表中选择一个元素时,都能在另一个JPanel中显示其索引。 守则:Java 使用SWING在另一个面板的列表中显示选定的行索引,java,swing,listselectionlistener,Java,Swing,Listselectionlistener,我有一个显示元素的列表。我希望每次从列表中选择一个元素时,都能在另一个JPanel中显示其索引。 守则: leftPanel.setLayout(new BoxLayout(leftPanel,BoxLayout.PAGE_AXIS)); leftList = new JList(listModel); leftList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); l
leftPanel.setLayout(new BoxLayout(leftPanel,BoxLayout.PAGE_AXIS));
leftList = new JList(listModel);
leftList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listScrollPane = new JScrollPane(leftList);
listScrollPane.setBorder(BorderFactory.createTitledBorder("Proteins"));
rightPanel.setBackground(Color.magenta);
rightPanel.setLayout(new FlowLayout());
for (String name : allNames) {
listModel.addElement(name);
}
leftList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent event) {
int nameIndex = leftList.getSelectedIndex();
JLabel msglabel = new JLabel("index = " + nameIndex, JLabel.CENTER);
rightPanel.add(msglabel);
}
});
这不会在JPanel中显示任何内容,在这段代码中,当选择一个元素时,可以通过按下按钮将其移动到另一个列表中。检查这段代码,它将帮助您
import java.awt.FlowLayout;
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.JScrollPane;
import javax.swing.ListSelectionModel;
public class Exp extends JFrame {
private JList rl;
private JList ll;
private JButton b;
private static String[] foods = { "asd", "asd", "dfg", "wer", "tyu" };
public Exp() {
super("Title");
setLayout(new FlowLayout());
ll = new JList(foods);
ll.setVisibleRowCount(3);
ll.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ll.setFixedCellHeight(15);
ll.setFixedCellWidth(100);
add(new JScrollPane(ll));
b = new JButton("Move -->");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
rl.setListData(ll.getSelectedValues());
}
});
add(b);
rl = new JList();
rl.setVisibleRowCount(3);
rl.setFixedCellHeight(15);
rl.setFixedCellWidth(100);
rl.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
add(new JScrollPane(rl));
}
}
1.右面板的原因是什么。添加(msglabel);,不是关于msglabel.setText(),2。为了获得更好的帮助,请尽快发布一个SSCCE/MCVE,简短、可运行、可编译,并在局部变量中使用JList的硬编码值