web-dev-qa-db-ja.com

プログラムでJTableの行を選択する

アプリケーションが開始されると、行は選択されません。しかし、最初の行がすでに選択されていることを示したいと思います。

これを行う方法? JTableの行の色を設定する必要がありますか?

更新:table.setRowSelectionInterval(0,0)を試しました。動作するはずですが、エラーメッセージが表示されます。

Exception in thread "AWT-EventQueue-0" Java.lang.IllegalArgumentException: Row index out of range
    at javax.swing.JTable.boundRow(Unknown Source)
    at javax.swing.JTable.setRowSelectionInterval(Unknown Source)
    at cpn_gui.OptPanel.createForm(OptPanel.Java:124)
    at cpn_gui.OptPanel.<init>(OptPanel.Java:50)
    at cpn_gui.Login$1.actionPerformed(Login.Java:62)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at Java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at Java.awt.Component.processEvent(Unknown Source)
    at Java.awt.Container.processEvent(Unknown Source)
    at Java.awt.Component.dispatchEventImpl(Unknown Source)
    at Java.awt.Container.dispatchEventImpl(Unknown Source)
    at Java.awt.Component.dispatchEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at Java.awt.Container.dispatchEventImpl(Unknown Source)
    at Java.awt.Window.dispatchEventImpl(Unknown Source)
    at Java.awt.Component.dispatchEvent(Unknown Source)
    at Java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at Java.awt.EventQueue.access$000(Unknown Source)
    at Java.awt.EventQueue$1.run(Unknown Source)
    at Java.awt.EventQueue$1.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.awt.EventQueue$2.run(Unknown Source)
    at Java.awt.EventQueue$2.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.awt.EventQueue.dispatchEvent(Unknown Source)
    at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at Java.awt.EventDispatchThread.run(Unknown Source)
50
Klausos Klausos

setRowSelectionInterval を呼び出して実行できます:

table.setRowSelectionInterval(0, 0);

最初の行を選択します。

94
aleroot

これは古い投稿ですが、最近これに出会いました

特定の間隔の選択

@alerootで既に述べたように、

table.setRowSelectionInterval(index0, index1);

選択する必要がある間隔を指定できます。

既存の選択に間隔を追加する

また、現在の選択を維持し、ここを使用して単純に行を追加することもできます

table.getSelectionModel().addSelectionInterval(index0, index1);

このコード行は、指定された間隔を追加で選択します。その間隔が既に選択されていても、その一部が選択されていても関係ありません。

12
rst

使用可能なAPI of JTableを使用し、色を台無しにしないでください。

一部の選択方法は、JTableで直接使用できます(setRowSelectionIntervalなど)。すべての選択関連ロジックにアクセスしたい場合は、 選択モデル が検索を開始する場所です

6
Robin