मैं अपने आवेदन में एक टूलबार बनाना चाहता हूं। यदि आप उस टूलबार पर एक बटन पर क्लिक करते हैं, तो यह एक मेनू पॉप अप करेगा, जैसे एक्लिप्स के टूलबार में। मुझे नहीं पता कि स्विंग में ऐसा कैसे करें। कृपया क्या कोई मेरी मदद कर सकता है? मैंने Google की कोशिश की है लेकिन कुछ भी नहीं मिला।मेनू के साथ जेबटन कैसे बनाएं?
उत्तर
स्विंग में यह आवश्यक है जितना होना चाहिए। तो आपको ट्यूटोरियल्स को इंगित करने के बजाय मैंने एक पूरी तरह से काम कर रहा उदाहरण बनाया है।
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class ToolbarDemo {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(600, 400));
final JToolBar toolBar = new JToolBar();
//Create the popup menu.
final JPopupMenu popup = new JPopupMenu();
popup.add(new JMenuItem(new AbstractAction("Option 1") {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "Option 1 selected");
}
}));
popup.add(new JMenuItem(new AbstractAction("Option 2") {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "Option 2 selected");
}
}));
final JButton button = new JButton("Options");
button.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
popup.show(e.getComponent(), e.getX(), e.getY());
}
});
toolBar.add(button);
frame.getContentPane().add(toolBar, BorderLayout.NORTH);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
मुझे लगता है कि यह एडब्ल्यूटी में जैसा ही है।
आपको उस बटन पर एक्शनकॉमैंड रखना चाहिए और जब इसे निष्पादित किया जाता है तो माउस निर्देशांक के अनुसार पॉप-अप मेनू दिखाएं।
मुझे यकीन है कि मैं तुम्हें सही ढंग से समझ, लेकिन अगर आप जानना चाहते हैं कि स्विंग जाँच में टूलबार बनाना चाहते नहीं कर रहा हूँ इस
अनुभाग परवरिश एक पॉपअप मेनू, How to Use Menus में।
सिर्फ इतना है कि इस अधिक विशिष्ट लिंक है: http://docs.oracle.com/javase/tutorial/uiswing/components/menu .html # पॉपअप – pratikabu
मुझे नहीं लगता कि यह क्यों कठिन है या आपको माउसलिस्टर का उपयोग क्यों करना चाहिए। स्टीव मैकिलोड द्वारा समाधान काम करता है, लेकिन जहां मेनू प्रकट होता है उस पर निर्भर करता है कि माउस कहां क्लिक किया गया था। सामान्य रूप से जेबटन के लिए उपयोग किए जाने वाले एक्शनलिस्टर का उपयोग क्यों न करें। ऐसा लगता है कि न तो कठिन और न ही कम कठिन है।
final JPopupMenu menu = new JPopupMenu();
menu.add(...whatever...);
final JButton button = new JButton();
button.setText("My Menu");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
menu.show(button, button.getBounds().x, button.getBounds().y
+ button.getBounds().height);
}
});
यह मेरे लिए एक JMenuBar में एक मेनू के रूप में ही बारे में मेनू की स्थिति और स्थिति अनुरूप है। आप मेनू और x में x और y को संशोधित करके इसे अलग-अलग रख सकते हैं।
दृष्टिकोण के साथ समस्या यह है कि पॉपअप मेनू केवल तब प्रकट होता है जब उपयोगकर्ता माउस बटन जारी करता है। मेनू माउस पर दिखाई देना चाहिए, माउस नहीं –
आप सही हैं। मैंने ध्यान नहीं दिया। मुझे अभी भी इसे दूसरी तरह से बेहतर पसंद है, लेकिन न तो पूरी तरह से संतोषजनक है। मैं उस तरीके को लागू नहीं कर रहा था जिसे मैं इस तरह से करने की कोशिश कर रहा था और इसलिए इसे किसी भी तरह से उपयोग नहीं किया। मुझे लगता है कि आप जो भी कर चुके थे वह कर सकते थे और स्थिति के असंगतता से बचने के लिए बटन निर्देशांक के साथ मेनू के मेरे संस्करण का उपयोग कर सकते हैं। –
यह एक बहुत बेहतर उत्तर है और अधिक वोट प्राप्त करना चाहिए। माउस क्लिक स्थान होने से बेहतर दिखता है। – rsman
यहाँ एक सरल और अच्छा वर्ग
import javax.swing.JPopupMenu;
import javax.swing.JToggleButton;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MenuButton extends JToggleButton {
JPopupMenu popup;
public MenuButton(String name, JPopupMenu menu) {
super(name);
this.popup = menu;
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
JToggleButton b = MenuButton.this;
if (b.isSelected()) {
popup.show(b, 0, b.getBounds().height);
} else {
popup.setVisible(false);
}
}
});
popup.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
MenuButton.this.setSelected(false);
}
@Override
public void popupMenuCanceled(PopupMenuEvent e) {}
});
}
}
- 1. स्क्रॉलबार के साथ पॉपअप मेनू कैसे बनाएं?
- 2. WP7 टाइल्स के साथ मेनू कैसे बनाएं?
- 3. साइडबार मेनू कैसे बनाएं
- 4. घूर्णन मेनू कैसे बनाएं
- 5. जेबटन
- 6. गतिशील विकल्प मेनू कैसे बनाएं?
- 7. जेबटन
- 8. जेबटन
- 9. जावा में उप मेनू के साथ पॉप अप मेनू कैसे बनाएं
- 10. एक नेस्ट यूएल मेनू बनाएं मेनू आइटम
- 11. मेनू बटन और मेनू आइटम शैली कैसे बनाएं
- 12. jQuery UI नेविगेशन मेनू क्षैतिज कैसे बनाएं?
- 13. शुद्ध सीएसएस आधारित ड्रॉपडाउन मेनू कैसे बनाएं?
- 14. क्षैतिज मेनू के साथ क्षैतिज मेनू-एंड्रॉइड
- 15. WPF में मेनू बार बनाएं?
- 16. ड्रॉप-डाउन मेनू वाला बटन कैसे बनाएं?
- 17. जावा - जेबटन
- 18. जावा, जेबटन
- 19. पारदर्शी जेबटन
- 20. यूएसएसडी मेनू के साथ कैसे बातचीत करें?
- 21. कंसोल टैब मेनू की तरह दिखने के लिए विम जीयूआई टैब मेनू कैसे बनाएं
- 22. वास्तव में जेबटन
- 23. तारों की सूची से पीईक्यूटी मेनू बनाएं
- 24. जेबटन के आकार के आधार पर जेबटन टेक्स्ट के आकार को स्वचालित रूप से कैसे बढ़ाया या धोखा देना है?
- 25. स्लाइडिंग मेनू के साथ एंड्रॉइड मैप व्यू मेनू
- 26. emacs के मॉडलिन में गतिशील मेनू के साथ बटन जोड़ें?
- 27. पायथन (जैसे ड्रॉपबॉक्स) में शेल एक्सटेंशन संदर्भ मेनू कैसे बनाएं
- 28. एडोब एयर में एंड्रॉइड विकल्प मेनू कैसे बनाएं? (जावा नहीं)
- 29. Android में प्रोग्रामेटिक रूप से मेनू कैसे बनाएं?
- 30. जेएलबेल (या कम से कम बटन किनारे के बिना) देखने के लिए जेबटन बनाएं)
मैं ऐसा कुछ कर रहा हूं, लेकिन JToolBar के बिना। क्या आपके समाधान में व्यवहार है जहां आप मेनू के साथ बटन को फिर से क्लिक करते हैं, तो इसे फिर से खोलने के बजाय, मेनू को फिर से पॉप अप करता है? –
मैंने कुछ अलग तरीके से भी किया: popup.show (c, 0, c.getHeight()); –
धन्यवाद। मुझे जो समाधान मिला है, उसे समझना सबसे आसान है, इसलिए मैं इसका उपयोग करूंगा हालांकि यह वास्तव में ड्रॉपडाउन जेबटन नहीं है। अन्य समाधान मुझे समझने के लिए बहुत जटिल हैं। मैंने उनमें से कुछ को नीचे सूचीबद्ध किया है।
Dikei