当列表项为';在Java中选择t

当列表项为';在Java中选择t,java,swing,Java,Swing,我有以下代码来创建JList: rightPanel.add(Box.createRigidArea(new Dimension(20, 20))); final JList list = new JList(nameData); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setLayoutOrientation(JList.VERTICAL); list.setVisibleRowCount(5); JSc

我有以下代码来创建JList:

rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
final JList list = new JList(nameData);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.setVisibleRowCount(5);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(250, 80));
listScroller.setAlignmentX(LEFT_ALIGNMENT);
rightPanel.add(listScroller);
当列表中的某个项目未被选中时,我有一个
listSelectionListener()
禁用按钮的代码:

list.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
        if (e.getValueIsAdjusting() == false) {
            if (list.getSelectedIndex() == -1) {
                //No selection.
                deleteConfirmButton.setEnabled(false);
            } else {
                //Selection.
                deleteConfirmButton.setEnabled(true);
                index = list.getSelectedIndex();
            }
        }
    }
});

但是,无论是否选中列表中的项目,按钮的状态都不会更改。我该怎么办?

您的
删除确认按钮
禁用启用逻辑不正确。首先,您需要禁用
。在选择列表时,应
启用
,在单击
删除确认按钮时,应再次
禁用
。阅读下面代码的注释

    final JButton deleteConfirmButton = new JButton("Kustuta");
    deleteConfirmButton.setEnabled(false); //Disable here



假设
deleteConfirmButton
位于名为rightPanel的
JPanel
内,调用
repaint
revalidate
方法再次绘制按钮

if (list.getSelectedIndex() == -1) {
            //No selection.
      deleteConfirmButton.setEnabled(false);
} else {
      //Selection.
      deleteConfirmButton.setEnabled(true);
      index = list.getSelectedIndex();
}
rightPanel.repaint();
rightPanel.revalidate();

将这些添加到if in ListSelectionListener()中并不能解决问题。问题仍然存在。谢谢,现在您为我讲清楚了,下面对代码所做的更改解决了我的问题。
  list.addListSelectionListener(new ListSelectionListener() {
     public void valueChanged(ListSelectionEvent e) {
           deleteConfirmButton.setEnabled(true);//Enable here
 }
});
if (list.getSelectedIndex() == -1) {
            //No selection.
      deleteConfirmButton.setEnabled(false);
} else {
      //Selection.
      deleteConfirmButton.setEnabled(true);
      index = list.getSelectedIndex();
}
rightPanel.repaint();
rightPanel.revalidate();