मैं ग्रहण के साथ काम कर रहा हूं और मुझे JXTreeTables के बारे में एक प्रश्न है। मुझे एक खिड़की चाहिए, नोड के बारे में कुछ जानकारी, पॉप अप करने के लिए, जब नोड डबल-क्लिक किया जाता है। अब, क्या क्लिक JXTreeTable या शून्य के डबल-क्लिक किए गए नोड को प्राप्त करना संभव है यदि क्लिक सीधे नोड पर नहीं था?डबल-क्लिक किए गए TreeTableNode कैसे प्राप्त करें?
उत्तर
मुझे थ्रेड क्लियोपेट्रा पर एक उत्तर मिला है जो उल्लेखनीय रूप से ठीक काम करता है और सरल है। यहाँ कोड है:
treeTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() != 2) {
return;
}
final int rowIndex = treeTable.rowAtPoint(e.getPoint());
if (rowIndex < 0) {
return;
}
final TreeTableNode selectedNode = (TreeTableNode)treeTable.getPathForRow(rowIndex).getLastPathComponent();
}
});
मान लिया जाये कि आप tree.getRowForLocation (...) के व्यवहार मतलब है: वहाँ treeTable पर कोई एपीआई है, तो आप एपीआई लापता मारा और :-)
swingx समस्या ट्रैकर में सुधार मुद्दा दायर करने के लिए विचार कर सकते हैंजब तक वह उपलब्ध नहीं होगा, आपको इसे एक कस्टम माउस लिस्टनर में करना होगा जो संबंधित पेड़ विधि को प्रतिनिधि करता है। में थोड़ा (खांसी ..) जा रहे गंदे एक JTree को श्रेणीबद्ध स्तंभ के लिए रेंडरर प्रकार कास्टिंग:
MouseListener l = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() != 2) return;
int column = treeTable.columnAtPoint(e.getPoint());
if (!treeTable.isHierarchical(column)) return;
Rectangle cell = treeTable.getCellRect(0, column, false);
JXTree tree = (JXTree) treeTable.getCellRenderer(0, column);
// translate x to tree coordinates
int translatedX = e.getX() - cell.x;
int row = tree.getRowForLocation(translatedX, e.getY());
LOG.info("row " + row);
}
};
treeTable.addMouseListener(l);
बस रिकार्ड के लिए, वहाँ Swinglabs forum over at java.net
संपादित
में एक समानांतर धागा हैकी मान्यताओं ;-)
ऑप्स के साथसंकट ही श्रोता एक डबल पर सक्रिय होगा जवाब देने तालिका में कहीं भी क्लिक करें सेल जिसमें नोड होता है, न कि जब नोड (उर्फ: इसका टेक्स्ट) पर सीधे। तो पता चला है कि पेड़ की रेखाओं के साथ आवश्यकता अधिक है .getClosestRowForLocation (..) अनुमानित पेड़ की तुलना में .getRowForLocation (..)।
- 1. डेटाग्रिड से सॉर्ट किए गए आइटम्ससोर्स को कैसे प्राप्त करें
- 2. सभी चेक किए गए चेकबॉक्स कैसे प्राप्त करें
- 3. क्लिक किए गए लिंक का टेक्स्ट मूल्य कैसे प्राप्त करें?
- 4. कोड किए गए एप्लिकेशन प्रमाणपत्र जानकारी कैसे प्राप्त करें
- 5. माउस की स्थिति/बटन प्राप्त करें डबलक्लिक घटना
- 6. मैं .NET रेडियो बटन में डबलक्लिक ईवेंट कैसे प्राप्त करूं?
- 7. यूआईटीएबीबार (नियंत्रक) - टैप किए गए इंडेक्स प्राप्त करें?
- 8. इंस्टॉल किए गए ऐप के एपीके प्राप्त करें
- 9. किसी सेवा से साझा किए गए संदर्भ प्राप्त करें
- 10. डब्ल्यूसीएफ - संदेश भेजे/प्राप्त किए गए संदेशों का निरीक्षण करें?
- 11. गतिशील सामग्री के साथ डबलक्लिक विज्ञापन कैसे लोड करें
- 12. कैसे मर्ज किए गए मूल्यों
- 13. एक लोड किए गए UIWebView
- 14. फ़िल्टर किए गए डेटासोर्स
- 15. निर्धारित किए गए कार्यों की सूची कैसे प्राप्त करें और अंतिम रन परिणाम कोल्डफ्यूज़न में कैसे प्राप्त करें?
- 16. जावास्क्रिप्ट: क्लिक किए गए तत्व
- 17. ज़ूम किए गए MKMapView
- 18. संपत्ति ग्रिड आइटम और डबलक्लिक
- 19. कैसे गणना करें कि कितने चेकबॉक्स चेक किए गए हैं
- 20. स्कैन किए गए पीडीएफ
- 21. कैश किए गए संस्करण
- 22. स्केल किए गए कैनवास
- 23. हस्ताक्षर किए गए चार *
- 24. सैंडबॉक्स किए गए ऐप
- 25. चेक किए गए लिस्टबॉक्स में पहले चेक किए गए आइटम पर स्क्रॉल करें
- 26. कैप्चर किए गए यातायात
- 27. जावास्क्रिप्ट: पास किए गए वैरिएबल
- 28. तैयार किए गए पैरामीटर
- 29. डिस्कनेक्ट किए गए नेटवर्क ड्राइव को रीकनेक्ट करना
- 30. क्लिक किए गए बटन
खुशी है कि तुम एक समाधान :-) बस सावधान रहना है: इस तरह से श्रोता तालिका सेल जो नोड शामिल में एक डबल क्लिक करें _anywhere_ पर सक्रिय होगा, न कि केवल जब _directly_ नोड पर (उर्फ: इसका पाठ)। – kleopatra
यह मेरा इरादा था लेकिन वैसे भी आपके उत्तर के लिए बहुत धन्यवाद :) :)! – user107043