2013-04-06 3 views
10

में एक जेटीबल में एक पंक्ति की ऊंचाई निर्धारित करना मैं एक जेटीबल में एक पंक्ति की ऊंचाई बढ़ाने में सक्षम होने के लिए एक समाधान की तलाश कर रहा हूं। मैं setRowHeight (int int) विधि का उपयोग कर रहा हूं जो संकलित करता है और ठीक चलाता है, लेकिन कोई पंक्ति नहीं बढ़ी है। जब मैं पंक्ति की getRowHeight (int) विधि का उपयोग करता हूं, तो मैंने ऊंचाई निर्धारित की है, यह उस आकार को मुद्रित करता है जिसे मैंने पंक्ति में बढ़ाया है, इसलिए मुझे यकीन नहीं है कि क्या गलत है। नीचे दिया गया कोड एक मोटा चित्र है कि मैं इसे हल करने की कोशिश कैसे कर रहा हूं।जावा

मेरी कक्षा जेएफआरएएम बढ़ाती है।

String[] columnNames = {"Column 1", "Column 2", "Column 1 3"}; 

JTable table = new JTable(new DefaultTableModel(columnNames, people.size())); 

DefaultTableModel model = (DefaultTableModel) table.getModel(); 

int count =1; 
for(Person p: people) 
{ 
    model.insertRow(count,(new Object[]{count, p.getName(), p.getAge()+"", 
    p.getNationality})); 
    count++; 
} 

table.setRowHeight(1, 15);//Try set height to 15 (I've tried higher) 

क्या कोई मुझे बता सकता है कि मैं गलत कहां जा रहा हूं? मैं पंक्ति 1 से 15 पिक्सल की ऊंचाई बढ़ाने की कोशिश कर रहा हूं?

+2

'मुझे लगता है कि उदाहरण के रूप में अपने कोड की व्यवस्था कर रहे हैं, और मैं भी अभी भी 100 को ऊंचाई तक वृद्धि हुई है, और दिखाई increase'। यही कारण है कि आपको अपना [एसएससीसीई] (http://sscce.org/) पोस्ट करना चाहिए जो समस्या का प्रदर्शन करता है। सिर्फ इसलिए कि आप कहते हैं कि आप कुछ कर रहे हैं इसका मतलब यह नहीं है कि आप वास्तव में ऐसा कर रहे हैं। हो सकता है कि आपने गलती से दो तालिकाओं को परिभाषित किया हो और आप उस तालिका की संपत्ति को बदल रहे हैं जो वास्तव में प्रदर्शित नहीं होता है। – camickr

+0

क्षमा करें मेरा बुरा, मैं लूप में setRowHeight (int int) विधि का उपयोग कर रहा था, लेकिन इसे setRowHeight (int) में बदल दिया और यह अब पूरी तरह से काम करता है। उत्तरों के लिए धन्यवाद, बहुत अधिक –

उत्तर

13

सुनिश्चित नहीं है कि इंडेक्स 0 खाली पर पहली पंक्ति को छोड़ने का इरादा क्या है। JTable में पंक्तियां 0 से चलती हैं। यदि आप एक पूर्ण उदाहरण पोस्ट कर सकते हैं (यानी SSCCE) जो मुद्दों को प्रदर्शित करता है तो यह सर्वोत्तम होता है। इस सरल उदाहरण है कि ठीक से काम करता है के लिए की तुलना करें:

enter image description here

import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class DemoTable { 
    private static void createAndShowGUI() { 
     JFrame frame = new JFrame("DemoTable"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     DefaultTableModel model = new DefaultTableModel(); 
     model.setColumnIdentifiers(new Object[] { 
       "Column 1", "Column 2", "Column 3" }); 

     JTable table = new JTable(model); 
     for (int count = 0; count < 3; count++){ 
      model.insertRow(count, new Object[] { count, "name", "age"}); 
     } 
     table.setRowHeight(1, 30); 

     frame.add(new JScrollPane(table)); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
+1

उत्तर के लिए बहुत बहुत धन्यवाद। जैसा कि मैंने कोड को आपके उदाहरण के रूप में व्यवस्थित किया है, यह अब काम करता है।बहुत सराहना की –

+0

@DouglasGrealis आपका स्वागत है, मुझे खुशी है कि यह आपकी मदद करता है! :) – tenorsax

11

आप उपयोग कर सकते हैं:

या एक विशेष पंक्ति, उपयोग के लिए पंक्ति की ऊँचाई सेट करने के लिए यदि आप चाहते थे:

table.setRowHeight(int par1, int par2);

+0

उत्तर के लिए धन्यवाद। जैसा कि आप मेरे कोड में देख सकते हैं, मैंने इसे पहले से ही बुलाया है, लेकिन ऐसा कुछ नहीं लगता है। –

+0

model.setRowHeight() का उपयोग करने का प्रयास करें? चूंकि आप टेबल वेरिएबल – madcrazydrumma

+0

से getModel() विधि का आविष्कार करते हैं, मैंने वहां कोशिश की है, और कंपाइलर आउटपुट: प्रतीक सेट RowHeight को स्थान पर डिफ़ॉल्टTableModel नहीं मिल सकता है? धन्यवाद फिर से –

2

तुम भी एक tableModelListener जोड़ सकते हैं?

model.addTableModelListener(new TableModelListener() { 
    @Override public void tableChanged(final TableModelEvent e) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override public void run() { 
       table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height 
      } 
     }); 
    } 
}); 
+0

उत्तर के लिए धन्यवाद। क्या मैं उन विधियों को कन्स्ट्रक्टर के बाहर ओवरराइड कर दूंगा? JTable –

+0

के साथ-साथ मैंने @DouglasGrealis किया। मेरी जेटीबल क्लास टेबलमोडेल लिस्टर बन गई और मेरे टेबल मॉडल ने इसे टेबलमोडेल लिस्टर के रूप में जोड़ा। – user1283704