तो मैं JTable
के साथ काम कर रहा हूं, जो कि मेरे अपने कस्टम डेटा मॉडल से जुड़ा हुआ है। यह सब कुछ कार्यात्मक है, लेकिन मेरी समस्या यह है कि जब भी मैं तालिका में परिवर्तन करता हूं (फायरिंग टेबलडेटा चेंज, टेबलस्ट्रक्चर चेंज, इत्यादि) कॉलम चौड़ाई सभी डिफ़ॉल्ट मानों को रीसेट कर देती है। मैं शोध से समझता हूं कि इसे डिफ़ॉल्ट रूप से TableColumnModel
के साथ असाइन करना है। इस रीसेटिंग के बाहर, मैं DefaultTableColumnModel
की कार्यक्षमता से खुश हूं, लेकिन यदि उपयोगकर्ता को उनका आकार बदलना चाहिए (कॉलम हेडर के किनारे को खींचकर) मैं कॉलम की चौड़ाई को बनाए रखना चाहूंगा।मैं जेटीबल में उपयोगकर्ता-निर्दिष्ट कॉलम चौड़ाई कैसे रख सकता हूं?
मैं TableColumns के लिए setPreferredWidth()
के बारे में पता कर रहा हूँ, और मुझे लगता है कि ऐसा करने के लिए सफलतापूर्वक कर लिया है; मुझे लगता है कि मेरा सवाल यह है कि इस पसंदीदा चौड़ाई को बचाने और सेट करने के लिए मुझे किस प्रकार की घटना सुननी चाहिए। मैंने तालिका शीर्षलेख में PropertyChangeListener
जोड़ने का प्रयास किया, लेकिन जब भी मैंने आकार बदलने का प्रयास किया तो मुझे एक स्टैक ओवरफ्लो मिलेगा (मुझे लगता है कि यह पुनरावर्ती चल रहा था)। कॉलम चौड़ाई के लिए डेटा मॉडल में एक अतिरिक्त डेटा सदस्य जोड़ने और इसे वहां संग्रहीत करने के साथ मैं बिल्कुल ठीक हूं, लेकिन मुझे नहीं पता कि इन चौड़ाई को कब/कैसे सेट किया जाए ताकि उन्हें fireTableStructureChanged()
द्वारा ओवरराइड नहीं किया जा सके, आदि घटनाओं। विचार?
इससे पहले कि आप अपने प्रक्रिया को बंद, स्तंभ चौड़ाई पढ़ सकते हैं और उन्हें एक गुण को बचाने के लिए फ़ाइल। जब आप अपनी प्रक्रिया खोलते हैं, गुण फ़ाइल पढ़ें और, यदि यह मौजूद है, तो स्तंभ चौड़ाई निर्धारित करें। आपको DefaultTableColumnModel का विस्तार करने की आवश्यकता हो सकती है ताकि आप कॉलम चौड़ाई को नियंत्रित कर सकें। –
यह वास्तव में fireTableStructureChanged (के लिए किसी भी कॉल में यह करता है) ही नहीं, कार्यक्रम के शुरू में है, इसलिए यदि मैं डाटा मॉडल (जहां यह कॉलम पुनर्जीवित करने के लिए है) में कॉलम जोड़ें या हटाएं यह ऐसा करता है। मैंने कॉलम चौड़ाई मैन्युअल रूप से सेट करने के लिए 'fireTableStructureChanged()' को ओवरराइड करने का प्रयास किया है, लेकिन ऐसा प्रतीत होता है कि इसका कोई प्रभाव नहीं है। मुझे लगता है कि मुझे यकीन नहीं है कि यह कॉलम पीढ़ी कहां हो रही है और इसे कहां ओवरराइड किया जाए। – kcoppock
मैंने हमेशा डेटा संचालित कॉलम चौड़ाई पूरी की है। अगर मुझे कुछ मिल जाए, तो मैं एक जवाब दूंगा। –