JCombo 中的子菜单

发布于 2024-10-21 20:15:10 字数 1155 浏览 4 评论 0原文

JComboBox 有一个add(PopUpMenu) 和一个add(JMenuItem)

我的类扩展了 JComboBox。我创建了一个 JPopUpMenu,但是当我单击 JComboBox 时它无法显示。相反,什么也没有显示。有什么想法吗?



    JPopupMenu Pmenu = new JPopupMenu();
    JMenu textAndDataMenu = new JMenu("Text and Data");

    HashMap textAndData = new HashMap();

    public ComboMenu()
    {
        super();
        setUpTextAndData();
        add(Pmenu);  //----------this is where I add the menu

    }

    public void setUpTextAndData()
    {
        textAndData.put("Basic Text Box", TextBox.class);
        textAndData.put("Clear Text Box", ClearTextBox.class);
        textAndData.put("Table", Table.class);
        textAndData.put("Interactive Table", InteractiveTable.class);
        textAndData.put("Graph", Graph.class);

        Set textAndDataKeys = textAndData.keySet();
        JMenuItem newMenuItem;
        for(String currKey : textAndDataKeys)
        {
            newMenuItem = new JMenuItem(currKey);
            newMenuItem.addActionListener(this);
            textAndDataMenu.add(newMenuItem);
        }

        Pmenu.add(textAndDataMenu);
    }

The JComboBox has a add(PopUpMenu) and a add(JMenuItem).

My class extends JComboBox. I create a JPopUpMenu, but it fails to display when I click on the JComboBox. Instead, nothing is displayed. Any ideas?



    JPopupMenu Pmenu = new JPopupMenu();
    JMenu textAndDataMenu = new JMenu("Text and Data");

    HashMap textAndData = new HashMap();

    public ComboMenu()
    {
        super();
        setUpTextAndData();
        add(Pmenu);  //----------this is where I add the menu

    }

    public void setUpTextAndData()
    {
        textAndData.put("Basic Text Box", TextBox.class);
        textAndData.put("Clear Text Box", ClearTextBox.class);
        textAndData.put("Table", Table.class);
        textAndData.put("Interactive Table", InteractiveTable.class);
        textAndData.put("Graph", Graph.class);

        Set textAndDataKeys = textAndData.keySet();
        JMenuItem newMenuItem;
        for(String currKey : textAndDataKeys)
        {
            newMenuItem = new JMenuItem(currKey);
            newMenuItem.addActionListener(this);
            textAndDataMenu.add(newMenuItem);
        }

        Pmenu.add(textAndDataMenu);
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无力看清 2024-10-28 20:15:10

编辑:没关系...你知道,我已经有一段时间没有搞乱这些了。

我认为您需要做的就是:

Pmenu.setInvoker(this);

在将其添加到构造函数之前。

EDIT: Nevermind ... you know, I haven't messed with these in a while.

I think all you need to do is:

Pmenu.setInvoker(this);

before adding it in your constructor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文