当列表项为';在Java中选择t
我有以下代码来创建JList:当列表项为';在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
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();