4

したがって、プログラムにJListがあり、選択されたインデックス0から始まります。ただし、プログラム中にmyJList.setSelectedIndex(-1)などを実行して、何も選択されないようにしますか?私がはっきりしていたことを願っています。ありがとう

4

2 に答える 2

4

JList選択をクリアするメソッドがあります。を参照してくださいJList#clearSelection。チェックJList#getSelectionModelListSelectionModelAPIを使用して、選択を変更するために使用できるメソッドを見つけます

編集:機能しないことを示したので、clearSelectionが期待どおりに機能することを示すSSCCEを作成しました

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 ) {
    }
  }
}
于 2011-12-30T19:10:47.197 に答える
3

どうですか:

SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            jList.clearSelection();
        }
}

別の方法:

    jButton1.addActionListener(
        (ActionListener)EventHandler.create(ActionListener.class, jList1, "clearSelection"));
于 2011-12-30T19:18:04.733 に答える