2011-12-28 40 views
43

Khi ứng dụng được khởi động, không có hàng nào được chọn. Nhưng tôi muốn cho thấy rằng hàng đầu tiên đã được chọn.Lập trình chọn một hàng trong JTable

Cách thực hiện việc này? Tôi có cần đặt màu của một hàng trong JTable không?

Cập nhật: Tôi đã thử table.setRowSelectionInterval (0,0). Tôi biết nó nên làm việc, nhưng có một thông báo lỗi:

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) 

Trả lời

81

Bạn có thể làm điều đó gọi setRowSelectionInterval:

table.setRowSelectionInterval(0, 0); 

để chọn hàng đầu tiên.

+0

Vui lòng kiểm tra các cập nhật trong bài viết của tôi. Tôi đã đăng một thông báo lỗi. Điều gì có thể sai? –

+1

Chỉ mục hàng ngoài giới hạn, có thể bảng trống ... – aleroot

+0

Mã của tôi trông như sau: QueryTableModel tableModel = new QueryTableModel(); Bảng JTable = JTable mới (tableModel); table.setRowSelectionInterval (0, 0); –

6

Bạn sử dụng available API của JTable và không cố gắng để gây rối với các màu sắc.

Một số phương pháp lựa chọn có sẵn trực tiếp trên JTable (như setRowSelectionInterval). Nếu bạn muốn có quyền truy cập vào tất cả các logic lựa chọn liên quan đến các selection model là nơi để bắt đầu tìm kiếm

+0

Tôi đã thử table.setRowSelectionInterval (1,1), nhưng nó nói rằng "Row index out of range", mặc dù bảng đã được điền từ DB. Bất kỳ ý tưởng? –

+1

Như hầu hết mọi thứ trong Java, đánh số bắt đầu từ hàng 0 và không phải hàng 1. Vì vậy, hãy thay đổi nó thành 'setRowSelectionInterval (0,0)' – Robin

9

Nó là một bài cũ, nhưng tôi đi qua này thời gian gần đây

Lựa chọn một khoảng thời gian cụ thể

Như @aleroot đã đề cập, bằng cách sử dụng

table.setRowSelectionInterval(index0, index1); 

Bạn có thể chỉ định một khoảng thời gian , nên được chọn.

Thêm một khoảng thời gian để lựa chọn hiện

Bạn cũng có thể giữ cho các lựa chọn hiện tại, và chỉ cần thêm hàng bổ sung bằng cách sử dụng này đây

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

dòng mã này thêm lựa chọn khoảng thời gian quy định . Nó không quan trọng nếu khoảng đó đã được chọn, các phần của nó được chọn.

+1

Đây là câu trả lời chung chung hơn, bao gồm cả lựa chọn hàng liên tiếp và không liên tiếp. Nó làm việc cho tôi. –

Các vấn đề liên quan