以编程方式在JTable中选择一行

Kla*_*sos 50 java swing row jtable selected

启动应用程序时,不会选择任何行.但我想表明第一行已被选中.

这该怎么做?我需要设置一行的颜色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)
Run Code Online (Sandbox Code Playgroud)

ale*_*oot 95

你可以调用setRowSelectionInterval:

table.setRowSelectionInterval(0, 0);
Run Code Online (Sandbox Code Playgroud)

选择第一行.

  • 在调用table.setRowSelectionInterval(0,0)之前,您必须确保表中至少存在一行,否则您将收到此错误.填写表后调用table.setRowSelectionInterval(0,0)... (2认同)

rst*_*rst 12

这是一个老帖子,但我最近遇到过这个问题

选择特定间隔

正如@aleroot已经提到的那样,通过使用

table.setRowSelectionInterval(index0, index1);
Run Code Online (Sandbox Code Playgroud)

您可以指定应选择的间隔.

在现有选择中添加间隔

您还可以保留当前选择,只需在此处添加其他行即可

table.getSelectionModel().addSelectionInterval(index0, index1);
Run Code Online (Sandbox Code Playgroud)

此行代码另外选择指定的间隔.如果已经选择了该间隔,则选择其中的一部分并不重要.


Rob*_*bin 6

您使用可用的API,JTable并且不要试图弄乱颜色.

一些选择方法可直接在JTable(如setRowSelectionInterval)上使用.如果您想要访问所有与选择相关的逻辑,则选择模型是开始查看的地方