मेरे पास दो नकली डेटा के साथ दो जेटी हैं, जो मैं करना चाहता हूं वह प्रत्येक 'नौकरी' (15663-1, 15663-2, आदि) लेने में सक्षम है और प्रत्येक के लिए एक नोड बना सकता है इसके नीचे प्रत्येक भाग के लिए नोड और उसके नीचे प्रत्येक भाग से जुड़े घटक। दो पेड़, इस तरह में:मैं एक जेटीआर से दूसरे में बुद्धिमान ड्रैग और ड्रॉप कैसे कार्यान्वित करूं?
+------------------------------+------------------------------+
| PARTS TO BE SHIPPED | SHIPPING BOX |
+------------------------------+------------------------------+
|[JOB] |[JOB] |
|+------[part] |+------[part] |
| +------[component] | +------[component] |
| +------[component] | +------[component] |
|+------[part] |+------[part] |
| +------[component] | +------[component] |
|[JOB] |[JOB] |
|+------[part] |+------[part] |
| +------[component] | +------[component] |
| +------[component] | +------[component] |
|+------[part] |+------[part] |
| +------[component] | +------[component] |
+------------------------------+------------------------------+
ताकि मान मैं में काम एक में कवर में दो शिकंजा है jtree 'भागों भेज दिया' और मैं शिपिंग बॉक्स में joba में कुछ भी नहीं है, जब मैं शिपिंग बॉक्स में शिकंजा खींचता हूं तो उसे नौकरी ए के लिए एक प्रविष्टि बनाना चाहिए, भाग ए के लिए एक प्रविष्टि बनाना चाहिए और घटक के लिए एक प्रविष्टि बनाना है, तो मैं चाहता हूं कि यह उस घटक की मात्रा के लिए संकेत दें और उस मात्रा को घटाएं भागों को भेज दिया जा सकता है।
तो अगर मेरे पास 1553-4 नामक नौकरी है और इसमें चार शिकंजा के साथ एक कवर है और मैं शिकंजा को शिपिंग बॉक्स में खींचता हूं तो उसे शिपिंग बॉक्स में प्रवेश करना चाहिए जो कहता है, "एक्स शिकंजा" तो संकेत उपयोगकर्ता को शिकंजा की संख्या में प्रवेश करने के लिए, यदि वे दो शिकंजा पैकेज करते हैं तो jtree को उस नौकरी के लिए शेष 2 शिकंजाओं को प्रतिबिंबित करने के लिए बदलना चाहिए।
मैंने अलग-अलग ड्रैग और ड्रॉप ट्यूटोरियल का एक गुच्छा पढ़ा है और मेरे पास कुछ उदाहरण हैं लेकिन मुझे लगता है कि मैं इसे प्राप्त नहीं कर सकता। किसी भी सलाह या मदद की सराहना की जाएगी।
मुझे पता है कि मुझे एक ट्रैनफ़र हैंडलर को लागू करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि, वास्तव में कितना इंटरफ़ेस 'जादू' चल रहा है और मैं वास्तव में इसे समझ नहीं रहा हूं।
package com.protocase.examples;
import java.awt.Dimension;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
/**
* @author DavidH
*/
public class JTreeExample {
public static void main(String[] args) {
addTreesAndDisplay();
}
private static void addTreesAndDisplay() throws HeadlessException {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTree tree = new JTree(getTreeModel());
tree.setDragEnabled(true);
tree.setPreferredSize(new Dimension(200,400));
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(tree);
panel.add(scroll);
JTree secondTree = new JTree(getTreeModel());
secondTree.setPreferredSize(new Dimension(200,400));
secondTree.setDragEnabled(true);
JScrollPane secondScroll = new JScrollPane();
secondScroll.setViewportView(secondTree);
panel.add(secondScroll);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private static DefaultTreeModel getTreeModel() {
MutableTreeNode root = new DefaultMutableTreeNode("15663-1");
DefaultMutableTreeNode cover = new DefaultMutableTreeNode("Cover");
DefaultMutableTreeNode base = new DefaultMutableTreeNode("Base");
root.insert(cover, 0);
root.insert(base, 0);
cover.insert(new DefaultMutableTreeNode("2x PEMS"), 0);
cover.insert(new DefaultMutableTreeNode("2x SCREWS"), 0);
base.insert(new DefaultMutableTreeNode("4x SCREWS"), 0);
base.insert(new DefaultMutableTreeNode("4x HANDLES"), 0);
DefaultTreeModel model = new DefaultTreeModel(root);
return model;
}
}
मैं सिर्फ एक संक्षिप्त खींचें की तलाश में और खींचने का उदाहरण ड्रॉप एक JTree में और से खींच कर रहा हूँ:
यह है कि मैं क्या है है कि मैं क्या है, यहाँ मैं बनाने नोड्स और इस तरह समझते हैं, है एक जेटी।
यह एक महान स्पष्टीकरण है। मुझे पता है कि मुझे ट्रांसफरहैंडलर को विस्तारित करने की आवश्यकता है, लेकिन क्या मुझे डेटाफ्लॉवर का विस्तार करने की आवश्यकता है? तो मुझे अपनी स्रोत सूची में ट्रांसफर हैंडलर का विस्तार करने की आवश्यकता है और इसे एक हस्तांतरणीय संस्करण में पैकेज करने के लिए क्या करना है (जो एक वस्तु है जो किसी ऑब्जेक्ट का मालिक है और ट्रांसफर करने योग्य है) और फिर गंतव्य के लिए दूसरा ट्रांसफर हैंडलर लिखना है (जब तक कि पहले स्थानांतरण हैंडलर को पता न हो कि दोनों कैसे करें)? डेटाफ्लॉवर कहां आते हैं? – davidahines
डेटाफ्लॉवर यह इंगित करने का एक तरीका है कि 'हस्तांतरणीय' (प्रेषक के लिए) में किस प्रकार का डेटा उपलब्ध है, और रिसीवर के लिए किसी विशेष प्रकार के डेटा का अनुरोध करने के लिए। इसके बारे में सोचें जैसे कि लाइब्रेरी बुक पर एक तरह का लेबल, जहां आप "मुझे रहस्य पुस्तिका दें" बना सकते हैं "मुझे रोमांटिक सामान दें" – Robin
धन्यवाद, मैं इन ट्यूटोरियल को देखने जा रहा हूं। – davidahines