Java 使用SWING在另一个面板的列表中显示选定的行索引

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

我有一个显示元素的列表。我希望每次从列表中选择一个元素时,都能在另一个JPanel中显示其索引。 守则:

        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的硬编码值