JTable

2011-12-28 21 views
43

'da bir satırda programlı olarak bir satır seçin Uygulama başlatıldığında, hiçbir satır seçili değil. Ama ilk satırın zaten seçildiğini göstermek istiyorum.JTable

Bu nasıl yapılır? Bir satırın rengini JTable olarak ayarlamam gerekir mi?

Güncelleme: Tablo.setRowSelectionInterval'ı (0,0) denedim. Bunun çalışması gerekir biliyorum ama bir hata mesajı var:

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) 

cevap

81

Bunu setRowSelectionInterval arayarak yapabilirsiniz seyir başlangıç ​​noktasıdır.

+0

Lütfen yazımdaki güncellemeleri kontrol edin. Bir hata mesajı gönderdim. Ne yanlış olabilir? –

+1

Satır endeksi cilt dışı, belki tablo boş ... – aleroot

+0

Kodum aşağıdaki gibi görünüyor: QueryTableModel tableModel = new QueryTableModel(); J Tablosu = yeni JTable (tableModel); table.setRowSelectionInterval (0, 0); –

6

Sen JTable ait available API kullanmak ve renkleri ile karışıklık kalkmayın.

Bazı seçim yöntemleri doğrudan JTable (setRowSelectionInterval gibi) kullanılabilir.

table.setRowSelectionInterval(0, 0); 

ilk satırı seçmek için: Tüm seçim ile ilgili mantık erişmesini istiyorsanız, selection model

+0

table.setRowSelectionInterval (1,1) 'i denedim, ancak tablo zaten DB'den doldurulmuş olmasına rağmen "Satır dizisi aralık dışı" diyor. Herhangi bir fikir? –

+1

Java'daki hemen hemen her şey gibi, numaralandırma satır 1'den değil, satır 1'den başlar. Bu nedenle, 'setRowSelectionInterval (0,0)' olarak değiştirin – Robin

9

Bu eski bir yazı olduğunu, ancak @aleroot zaten sen bir aralık belirtebilirsiniz

table.setRowSelectionInterval(index0, index1); 

kullanarak, belirtildiği gibi Belirli bir aralık

seçilmesi bu son zamanlarda

geldi , hangisi seçilmelidir.

mevcut seçime bir aralık ekleme Ayrıca geçerli seçimi tutmak ve sadece burada

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

Bu kod satırı bu kullanarak ek satırlar ekleyebilirsiniz

ayrıca belirtilen aralığı seçer

. Bu aralığın zaten seçilmiş olması önemli değil, bölümleri seçildi.

+1

Bu, hem ardışık hem de ardışık olmayan satır seçimini kapsayan daha genel bir yanıttır. Benim için çalıştı. –