【问题标题】:JPopupMenu not appearing?JPopupMenu 没有出现?
【发布时间】:2026-02-17 10:55:01
【问题描述】:

我有一个 Java 小程序,它包含几个用户必须与之交互的弹出菜单。但是,添加时 JPopupMenu 不会显示。这是我的代码:

public class Parser extends JApplet implements ActionListener {
    private static final long serialVersionUID = 1L;
    JPopupMenu deviceMenu;
    JButton downloadButton;
    Map <String, Object> deviceDict;

    public void init () {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
        } 
        catch (Exception e) { 
            System.err.println("createGUI didn't successfully complete");
        }
    }
    public void createGUI() {
        try {
            URL url = new URL("[URL]");
            URLConnection conn = url.openConnection();
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    conn.getInputStream()));
            String inputLine;
            String xml = "";
            while ((inputLine = in.readLine()) != null) 
                xml = xml + inputLine;
        deviceDict = Plist.fromXml(xml);
        System.out.print(deviceDict);
        } 

        catch (XmlParseException e) {
            e.printStackTrace();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        setLayout(new FlowLayout());
        setPreferredSize(new Dimension(480, 360));
        setSize(480, 360);
        Iterator <String> deviceIterator = deviceDict.keySet().iterator();
        deviceMenu = new JPopupMenu("Test");
        while (deviceIterator.hasNext()) {
            JMenuItem item = new JMenuItem(deviceIterator.next());
            deviceMenu.add(item);
        }
        add(deviceMenu);
    }
}

有什么想法吗?

【问题讨论】:

  • 使用 JComboBox,而不是 JPopupMenu

标签: java swing user-interface jpopupmenu japplet


【解决方案1】:

您希望它何时显示?
如果要显示弹出菜单,您需要调用show()
请参阅此examplethe one from oracle site

顺便说一句 - 从你的问题看来JDialog

【讨论】:

  • 我明白了。我对 JPopupMenu 的实际作用感到困惑。如果我想要那种菜单帽子基本上有一个按钮,当点击时会显示一个 JPopupMenu,是否有一个对象,或者我必须让它成为一个按钮?
  • 如果我猜对了 - 您将需要使用 JMenuItem 创建它们中的每一个。
  • 我想要的是这样的东西:i.imgur.com/VCal4.png,点击它会显示 JPopupMenu。
  • 这个叫JComboBox。
【解决方案2】:

必须使用 JComboBox 而不是 JPopupMenu

【讨论】: