चेक बॉक्स के साथ JTree

वोट
12

मैं एक JTree के लिए चेक बॉक्स जोड़ने की जरूरत है। एक कस्टम TreeCellRenderer / TreeCellEditor सही दृष्टिकोण की तरह लगता है। अब तक मैं इस्तेमाल किया इस वेबपेज में CheckBoxNodeRenderer दृष्टिकोण । यह दो बातों के लिए छोड़कर ठीक काम करता है:

  1. वहाँ ऊपर चेकबॉक्स के नीचे स्थित + अतिरिक्त खाली स्थान के है, मैं एक नियमित JTree के रूप में यह एक ही रखना चाहते हैं।
  2. मैं चेकबॉक्स ही (जो चेकबॉक्स टॉगल करने के लिए प्रयास करना चाहिए) पर क्लिक करके और चेकबॉक्स (जो एक घटना श्रोता इसी पेड़ नोड पर क्लिक करने के रूप में इस व्याख्या और जो कुछ भी कार्रवाई करने के लिए अनुमति चाहिए के साथ जुड़े पाठ पर क्लिक के बीच अंतर करना चाहते हैं उचित है)

वहाँ इन बातों को करने के लिए एक तरीका है? मैं चेक बॉक्स के साथ JTrees के लिए चारों ओर देखा, ज्यादा नहीं मिल रहा। Jide अच्छा लग रहा है, लेकिन मैं खुले मुक्त स्रोत सॉफ्टवेयर का उपयोग करने की जरूरत है (जीपीएल ठीक नहीं है, LGPL ठीक है) इस मामले में। (या अपने खुद के चेकबॉक्स पेड़ बनाने)

03/08/2009 को 17:06
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
7

# 2 के लिए के रूप में, आप कर सकते हैं एक पैनल संपादक / रेंडरर हो, और चेकबॉक्स के साथ लेबल जोड़ने - लेबल पाठ होगा, और चेक बॉक्स पाठ को जोड़ता नहीं होता।

03/08/2009 को 18:00
का स्रोत उपयोगकर्ता

वोट
4

@aperkins सुझाव प्रति यह है कि क्या मैं TableCellRenderer में कर समाप्त हो गया है, यह अच्छी तरह से काम करने लगता है है:

final private JPanel nodeRenderer = new JPanel();
final private JLabel label = new JLabel();
final private JCheckBox check = new JCheckBox();

     ...

// in constructor:
final Insets inset0=new Insets(0,0,0,0);        
this.check.setMargin(inset0);
this.nodeRenderer.setLayout(new BorderLayout()); 
this.nodeRenderer.add(this.check, BorderLayout.WEST);
this.nodeRenderer.add(this.label, BorderLayout.CENTER);

मार्जिन में अवांछित अंतरिक्ष से छुटकारा पाने के लिए चाबी हो रहा है (क) बुला JCheckBox.setMargin () चेकबॉक्स मार्जिन कम करने के लिए, और (ख) JPanel के लिए एक BorderLayout का उपयोग कर।

03/08/2009 को 20:35
का स्रोत उपयोगकर्ता

वोट
9

मैं इस सवाल पहले से ही उत्तर दिया गया है पता है, लेकिन मैं सिर्फ कुछ बिंदुओं को स्पष्ट करना चाहते हैं:

1) Jide आम लेयर दोहरे लाइसेंस (classpath अपवाद और वाणिज्यिक लाइसेंस) के साथ जीपीएल है। इसका मतलब यह है कि आप किसी भी लाइसेंस के मुद्दों के बिना आम परत परियोजना का उपयोग कर सकते हैं। : पुष्टि करने के लिए नीचे दिए गए लिंक की जांच करें http://www.jidesoft.com/products/oss.htm । आम परत एक चेक करने योग्य JTree (com.jidesoft.swing.CheckBoxTree) के एक कार्यान्वयन भी शामिल है।

: 2) वहाँ एक ब्लॉग मास्टर खुद को, संतोष कुमार, जहां वह कैसे आवश्यकताओं आप का उल्लेख के साथ चेक बॉक्स के साथ एक JTree लागू करने के लिए बताते हैं से 2005 से दिनांकित है http://www.jroller.com/santhosh/entry/jtree_with_checkboxes । यह इसे पढ़ने लायक है, मेरी राय में।

20/02/2012 को 13:16
का स्रोत उपयोगकर्ता

वोट
2

मैं एक स्टैंडअलोन जारी किया है घुमाओ चेकबॉक्स ट्री परियोजना, के रूप में Maven सेंट्रल से उपलब्ध org.scijava:swing-checkbox-tree

पैकेज जॉन Zukowski के पर आधारित है चेक बॉक्स नोड ट्री नमूना कोड। यह कोई निर्भरता के साथ बीएसडी-2-लाइसेंस प्राप्त है।

यह मिश्रण और मिलान की अनुमति देता है DefaultMutableTreeNodeऔर CheckBoxNodeDataनोड प्रकार के। यह भी गैर पत्र-गांठ के रूप में बॉक्स नोड्स की जाँच की अनुमति देता है।

के बारे में सवाल का मुद्दा # 1: मैं सभी प्लेटफार्मों पर परीक्षण नहीं किया था, लेकिन मेरे ओएस एक्स सिस्टम पर, CheckBoxNodeDataनोड्स बिल्कुल के रूप में पिक्सल में एक ही ऊंचाई हैं DefaultMutableTreeNodeनोड्स।

के बारे में सवाल का मुद्दा # 2: यह एक का उपयोग करता है JCheckBox+ JLabelएक में JPanel(के रूप में aperkins पता चलता है) एक चेक बॉक्स पर क्लिक के बीच अंतर करने (जाँच करने के लिए / एक नोड हटाते) एक लेबल बनाम (एक नोड का चयन करने के लिए)।

उदाहरण उपयोगों:

बाद के उदाहरण भी रिकर्सिवली बक्से के जवाब में subtrees टॉगल जाँच की जा रही या अनियंत्रित (देखें के लिए कोड है treeNodesChangedविधि)।

12/10/2012 को 20:49
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more