【问题标题】:Cannot move JMenu to JMenuBar无法将 JMenu 移动到 JMenuBar
【发布时间】:2009-09-02 10:10:24
【问题描述】:

我正在尝试将菜单结构从 JMenu 移动到 JMenuBar。上面的代码根据 TEST 显示不同的菜单。对于 TEST==1 我希望菜单栏中有 aa bb,但只显示 aa 吗?代码显示问题,不是我的真实代码....

public class Test {

    public static void main(String[] args) {

        int TEST = 1; // or 2

        JMenu menu = new JMenu("a");

        JMenu menu2 = new JMenu("aa");
        menu.add(menu2);

        menu2 = new JMenu("bb");
        menu.add(menu2);

        JMenuBar mbar = new JMenuBar();

        if (TEST == 1) {
            for (int i = 0; i < menu.getItemCount(); i++) {
                mbar.add(menu.getItem(i));
            }
        }

        if (TEST == 2) {
            mbar = new JMenuBar();
            mbar.add(menu);
        }

        JFrame frame = new JFrame();
        frame.setJMenuBar(mbar);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

【问题讨论】:

    标签: java swing menubar


    【解决方案1】:

    呵呵,棘手的一个。通过执行

    mbar.add(menu.getItem(i));
    

    您刚刚添加到mbar 的菜单将从menu 中删除。在下一次迭代menu.getItemCount() 返回1 并且你for 循环结束。这个可行:

    if (TEST == 1) {
        int m = menu.getItemCount();
        for (int i = 0; i < m; i++) {
             mbar.add(menu.getItem(0));
        }
    }
    

    【讨论】:

    • 该死的!我想我几年前有过,不记得了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多