JMenu子菜单项未正确显示

时间:2017-04-16 11:12:52

标签: java swing jmenuitem

我想将2 JRadioButtonMenuItem个子菜单项添加到JMenuItem,但子菜单项无法正确显示。

这是我到目前为止尝试过的代码

 private void setupEditMenu() {

    editMenu = new JMenu("Edit");

    // some code..

    tabSpaceMenuItem = new JMenuItem("Tab Length");
    editMenu.add(tabSpaceMenuItem);

    ButtonGroup tabSpaceButtonGroup = new ButtonGroup();
    JMenuItem fourSpacedTabMenuItem, eightSpacedTabMenuItem;

    fourSpacedTabMenuItem = new JRadioButtonMenuItem("4 spaces");
    fourSpacedTabMenuItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            editor.setTabSize(4);
        }
    });
    tabSpaceButtonGroup.add(fourSpacedTabMenuItem);
    tabSpaceMenuItem.add(fourSpacedTabMenuItem);

    eightSpacedTabMenuItem = new JRadioButtonMenuItem("8 spaces");
    eightSpacedTabMenuItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            editor.setTabSize(8);
        }
    });
    tabSpaceButtonGroup.add(eightSpacedTabMenuItem);
    tabSpaceMenuItem.add(eightSpacedTabMenuItem);

    if(editor.getTabSize() == 4)
        fourSpacedTabMenuItem.setSelected(true);
    if(editor.getTabSize() == 8) {
        eightSpacedTabMenuItem.setSelected(true);
    }
}

电流输出 enter image description here

预期:

Edit
 |-Find
 |-Font
 |-Tab Length
    |- 4 spaces
    |- 8 spaces

我错过了什么?

1 个答案:

答案 0 :(得分:2)

JMenuItem不是其他JMenuItem的容器。相反,请将tabSpaceMenuItem改为JMenu而不是......

tabSpaceMenuItem = new JMenu("Tab Length");

Submenu Items