प्राप्त करना मुझे JPopupMenu
की स्थिति प्राप्त करने में समस्या हो रही है।JPopupMenu की स्थिति
मैं क्या जरूरत है, कार्य क्षेत्र पर राइट क्लिक कुछ
मेनू आइटम क्लिक करें और फिर सही पहले से दिखाया गया मेनू की स्थिति के तहत जगह में एक तत्व बनाने के लिए सक्षम होने के लिए है।
मैं मेनू ही की और उसके मदों की स्थिति हो रही है की कोशिश की,
लेकिन यह मुझे निरंतर मूल्यों देता है 0. चारों ओर (कोड में टिप्पणियों को देखने के)
चिंताओं में से जुदाई की वजह से , मेनू एक वर्ग
में प्रदर्शित होता है जबकि इसके कार्यों को दूसरे में संभाला जाता है।
public final class MainFrameMenu
extends JPopupMenu
implements ActionListener {
private final MainFrame mainFrame;
private final JMenuItem item1 = new JMenuItem("add line");
private final JMenuItem item2 = new JMenuItem("add element");
public MainFrameMenu(MainFrame mainFrame) {
super("Main menu");
this.mainFrame = mainFrame;
item1.addActionListener(this);
item2.addActionListener(this);
add(item1);
add(item2);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == item1) {
System.out.println(getLocation()); // gives ALWAYS [0, 0]
System.out.println(item1.getLocation()); // gives ALWAYS [1, 3]
// I want to create an element IN PLACE
mainFrame.addConnectionLine(getX(), getY());
}
}
}
public final class PopupMouseListener
extends MouseAdapter {
private final JPopupMenu menu;
public PopupMouseListener(JPopupMenu menu) {
this.menu = menu;
}
@Override
public void mousePressed(MouseEvent e) {
popup(e);
}
@Override
public void mouseReleased(MouseEvent e) {
popup(e);
}
private void popup(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
मैं जानता हूँ कि मैं PopupMouseListener
, में अंतिम ज्ञात स्थिति स्टोर और MainFrameMenu से पढ़ सकता है, लेकिन यह कक्षाएं पदानुक्रम को बर्बाद कर सकता है (PopupMouseListener
डॉन के अधिकांश अन्य घटनाओं ' टी की जरूरत नहीं है)।
बेशक! माउस की स्थिति !!! यह काम करता है, धन्यवाद! - (बीटीडब्ल्यू, getParent()। GetLocation() भी स्थिरांक वापस।) –