所以我的程序中有一个JList,它从选定的索引0开始。但是,在程序中我想做myJList.setSelectedIndex(-1)或类似的东西,以便没有选择任何东西?希望我很清楚。感谢
答案 0 :(得分:4)
JList
有一种清除选择的方法。见JList#clearSelection
。检查JList#getSelectionModel
和ListSelectionModel
API以了解可用于更改选择的方法
编辑:既然你说它不起作用,我创建了一个SSCCE,显示clearSelection按预期工作
public class Test {
public static void main( String[] args ) {
try {
SwingUtilities.invokeAndWait( new Runnable() {
public void run() {
JFrame frame = new JFrame( "TestFrame" );
frame.getContentPane().setLayout( new BorderLayout( ) );
DefaultListModel listModel = new DefaultListModel();
listModel.addElement("Jane Doe");
listModel.addElement("John Smith");
listModel.addElement("Kathy Green");
final JList list = new JList( listModel );
list.setSelectedIndex( 0 );
frame.getContentPane().add( list, BorderLayout.CENTER );
JButton clearSelectionButton = new JButton( "Clear selection" );
frame.getContentPane().add( clearSelectionButton, BorderLayout.SOUTH );
clearSelectionButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent aActionEvent ) {
list.clearSelection();
}
} );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
} );
} catch ( InterruptedException e ) {
} catch ( InvocationTargetException e ) {
}
}
}
答案 1 :(得分:3)
怎么样:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jList.clearSelection();
}
}
另一种方式:
jButton1.addActionListener(
(ActionListener)EventHandler.create(ActionListener.class, jList1, "clearSelection"));