2009-09-30 18 views
5

में कॉलम हेडर टेक्स्ट को गतिशील रूप से बदलना मेरे पास 3 कॉलम वाली एक तालिका है जिसमें शीर्षलेखों में निम्न मान हैं: 'नहीं', 'एक्स [मिमी]', 'वाई [मिमी]'। इस तालिका में मिलीमीटर में अंक के निर्देशांक होते हैं। मेरे पास जांच में एक चेकबॉक्स है जिसकी तालिका को इंच में निर्देशांक दिखाने के लिए दोहराया जाना चाहिए। इसके अलावा, कॉलम हेडर मान होना चाहिए: 'नहीं', 'एक्स [इन]', 'वाई [इन]'।जेटीबल

संक्षेप में मैं तालिका के हेडर टेक्स्ट को गतिशील रूप से बदलना चाहता हूं।

विस्तार से: तालिका जेटीबल का उप-वर्ग है। इसके अलावा, 'DefaultTableModel' का उप-वर्ग तालिका के लिए मॉडल के रूप में सेट किया गया है। मैंने डेटामोडेल सबक्लास के निर्माता में हेडर मान प्रदान किए हैं।

कोई विचार? मेरा आवेदन केवल जेडीके v1.4 के साथ संगत है, इसलिए समाधान अच्छा होगा यदि समाधान verion के साथ संगत है :)

उत्तर

24

आप TableColumnModel सीधे अद्यतन कर सकते हैं:

JTableHeader th = table.getTableHeader(); 
TableColumnModel tcm = th.getColumnModel(); 
TableColumn tc = tcm.getColumn(0); 
tc.setHeaderValue("???"); 
th.repaint(); 
+0

यह एक 100% समाधान नहीं है का उपयोग कारण यह केवल काम करता है जब तक मॉडल या बदल गया है "tableStructureChanged "निकाल दिया गया है। फिर कॉलम टेक्स्ट मॉडल से फिर से पढ़ा जाएगा। –

+3

यदि यह कोई समस्या है तो आप table.setAutoCreateColumnsFromModel (false) का उपयोग कर तालिका के प्रारंभ में – camickr

+0

+1 बना सकते हैं। बहुत अच्छा काम करता है। धन्यवाद। – Withheld

2

मैं यहां परीक्षण नहीं कर सकता लेकिन परिचित हूं कि इस विधि को [DefaultTableModel.setColumnIdentifiers(...)][1] 'करना चाहिए जो आप चाहते हैं।

मूल रूप से, आप कितने कॉलम (जब तक कि आप पहले से ही नहीं जानते) को खोजने के लिए 'DefaultTableModel.getColumnCount()' चलाते हैं। फिर आप प्रत्येक का नाम प्राप्त करने के लिए 'DefaultTableModel.getColumnName(int ColumnIndex)' चलाते हैं, जिस तरह से आप चाहते हैं उसे बदलें और इसे सरणी में रखें। उसके बाद, आप उन्हें 'DefaultTableModel.setColumnIdentifiers(...)' का उपयोग कर वापस सेट करते हैं।

उम्मीद है कि इससे मदद मिलती है।

8

यदि आपके पास स्तंभ संख्या है कि कोड

jtable.getColumnModel().getColumn(5).setHeaderValue("newHeader"); 
+1

आपको तालिका को अद्यतन करने के लिए कोड के बाद 'jtable.getTableHeader()। Repaint();' को कॉल करने की आवश्यकता है। – Amin

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