2011-12-28 35 views
43

में एक पंक्ति का चयन करें जब एप्लिकेशन प्रारंभ होता है, तो पंक्तियों में से कोई भी नहीं चुना जाता है। लेकिन मैं यह दिखाना चाहता हूं कि पहली पंक्ति पहले से ही चुनी गई है।प्रोग्रामेटिक रूप से 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) 

उत्तर

81

आप इसे setRowSelectionInterval बुला कर सकते हैं शुरू करने के लिए जगह है।

+0

पर बदलें, कृपया मेरी पोस्ट में अपडेट देखें। मैंने एक त्रुटि संदेश पोस्ट किया। क्या गलत हो सकता है? –

+1

पंक्ति सूचकांक बाध्य से बाहर, शायद तालिका खाली है ... – aleroot

+0

मेरा कोड इस प्रकार दिखता है: QueryTableModel tableModel = new QueryTableModel(); जेटीबल टेबल = नया जेटीबल (टेबल मॉडल); table.setRowSelectionInterval (0, 0); –

6

आप JTable की available API का उपयोग करें और रंगों के साथ गड़बड़ करने की कोशिश नहीं करते।

कुछ चयन विधियां सीधे JTable पर उपलब्ध हैं (जैसे setRowSelectionInterval)।

table.setRowSelectionInterval(0, 0); 

पहली पंक्ति का चयन करने के: आप सभी चयन संबंधी तर्क के लिए उपयोग किया चाहते हैं, selection model देख

+0

मैंने table.setRowSelectionInterval (1,1) की कोशिश की, लेकिन यह कहता है कि "पंक्ति सूचकांक सीमा से बाहर" है, हालांकि तालिका पहले ही डीबी से आबादी में थी। कोई विचार? –

+1

जावा में लगभग हर चीज के रूप में, संख्या 0 से शुरू होती है और पंक्ति 1 नहीं होती है। इसलिए इसे 'setRowSelectionInterval (0,0) ' – Robin

9

यह एक पुरानी पोस्ट है, लेकिन मैं पहले से ही @aleroot

table.setRowSelectionInterval(index0, index1); 

का उपयोग कर आप एक अंतराल निर्दिष्ट कर सकते हैं द्वारा, उल्लेख किया है एक विशिष्ट अंतराल

चुनने से यह हाल ही में

में आए , जिसे चुना जाना चाहिए।

मौजूदा चयन करने के लिए एक अंतराल जोड़ना

तुम भी वर्तमान चयन रख सकते हैं, और बस यहाँ

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

कोड की यह पंक्ति इस का उपयोग करके अतिरिक्त पंक्तियों को जोड़ने के अतिरिक्त निर्दिष्ट अंतराल का चयन करता है । इससे कोई फर्क नहीं पड़ता कि क्या अंतराल पहले ही चुना गया है, इसके कुछ हिस्सों का चयन किया जाता है।

+1

यह अधिक सामान्य उत्तर है, जो लगातार और लगातार लगातार पंक्ति चयन दोनों को शामिल करता है। यह मेरे लिए काम किया। –

संबंधित मुद्दे