0

我正在尝试将菜单结构从 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);
    }
}
4

1 回答 1

0

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

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));
    }
}
于 2009-09-02T10:31:21.103 回答