2011-06-24 12 views
5

मेरे पास निम्नलिखित JTable है (असल में यह नेटबीन्स से ETable है)। यह कंटेनर क्या है में फैला - मुझे लगता है कि रखने के लिए, और उपयोग नहीं JTable.AUTO_RESIZE_OFFऑटो/सर्वोत्तम फिट जेटीबल कॉलम, लेकिन अंतिम कॉलम

enter image description here

चाहते हैं

मैं नीचे की तरह प्रोग्राम के फिट करने के लिए, प्रत्येक स्तंभ का आकार बदलने केवल फिट करना चाहते हैं सेल सामग्री, या कॉलम हेडर टेक्स्ट और सही कॉलम रखने के लिए शेष स्थान भरें। मैं उसे कैसे कर सकता हूँ ?

enter image description here

+0

इस ट्यूटोरियल को देखने के/2008/11/10/तालिका स्तंभ-समायोजक /) –

उत्तर

0

आप ऑटो आकार बंद कर सकते हैं। इस मामले में कॉलम सामग्री के अनुसार स्वचालित रूप से आकार बदल जाएगा। लेकिन इस मामले में, यदि कुल कॉलम चौड़ाई तालिका की चौड़ाई से कम है, तो रिक्त स्थान दाईं तरफ होगा। यदि यह अधिक है, तो क्षैतिज स्क्रॉल बार दिखाई देगा।

आप TableColumn.setPreferredWidth का उपयोग करके प्रत्येक कॉलम को पसंदीदा चौड़ाई असाइन कर सकते हैं। स्विंग उस के अनुसार अतिरिक्त जगह वितरित करने का प्रयास करेगा। लेकिन यह भी गारंटी नहीं है।

0

आपको स्वत: रीसाइज को बंद करने के लिए सेट करना होगा (setAutoResizeMode(JTable.AUTO_RESIZE_OFF);), लेकिन आपको अपने कॉलम का आकार बदलने के लिए एक सहायक विधि की भी आवश्यकता है।

यह है कि JTable फैली एक कस्टम वर्ग के अंदर है, लेकिन आप बस के रूप में आसानी से एक मौजूदा JTable देख सकते हैं:

public void resizeColumnWidth() { 
    int cumulativeActual = 0; 
    int padding = 15; 
    for (int columnIndex = 0; columnIndex < getColumnCount(); columnIndex++) { 
     int width = 50; // Min width 
     TableColumn column = columnModel.getColumn(columnIndex); 
     for (int row = 0; row < getRowCount(); row++) { 
      TableCellRenderer renderer = getCellRenderer(row, columnIndex); 
      Component comp = prepareRenderer(renderer, row, columnIndex); 
      width = Math.max(comp.getPreferredSize().width + padding, width); 
     } 
     if (columnIndex < getColumnCount() - 1) { 
      column.setPreferredWidth(width); 
      cumulativeActual += column.getWidth(); 
     } else { //LAST COLUMN 
      //Use the parent's (viewPort) width and subtract the previous columbs actual widths. 
      column.setPreferredWidth((int) getParent().getSize().getWidth() - cumulativeActual); 
     } 
    } 
} 

कॉल resizeColumnWidth() जब भी आप एक पंक्ति जोड़ें।

वैकल्पिक रूप से मेज पर एक श्रोता जोड़ सकते हैं ताकि कॉलम भी जब तालिका ही आकार दिया जाता है आकार दिया गया है: [तालिका स्तंभ समायोजक] (http://tips4java.wordpress.com:

public MyCustomJTable() { 
    super(); 
    addHierarchyBoundsListener(new HierarchyBoundsAdapter() { 
     @Override 
     public void ancestorResized(HierarchyEvent e) { 
      super.ancestorResized(e); 
      resizeColumnWidth(); 
     } 
    }); 
    setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
} 
संबंधित मुद्दे