JMenu的子菜单的小箭头图标指示(JMenu submenu little arrow icon

2019-07-31 05:06发布

有谁知道如何控制对JMenu的子菜单中出现的小小的箭头的显示?

我可以改变它? 我可以禁用它? 我能移动吗?

另外,我注意到,该箭头不上顶级JMenus出现,只有当他们有其他的JMenu的子菜单。 这种不一致让我很烦,因为我的JMenuItem和JMenu的的混合贴在我的JMenuBar的根,所以我希望它一直表示它。 总之要做到这一点呢?

谢谢!

Answer 1:

看看在Menu.arrowIcon UI属性

(感谢AndrewThompson用于测试代码)。

Doining您应用的修改,这将影响所有创建的菜单。

等你以后的init外观和创建任何菜单调用之前UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null);

我只想说,我认为这是一个可怕的想法,并从这样做会极力阻止你。



Answer 2:

这支箭没有出现在顶级JMenus只有当他们有其他的JMenu的子菜单。

这似乎(单调)在这里使用金属的外观一致。

import javax.swing.*;

public class MenuArrows {

    MenuArrows() {
        JMenuBar mb = new JMenuBar();

        JMenu root1 = new JMenu("Root Menu 1"); 
        JMenu root2 = new JMenu("Root Menu 2"); 

        addSubMenus(root1, 5);
        addSubMenus(root2, 3);

        mb.add(root1);
        mb.add(root2);

        JOptionPane.showMessageDialog(null, mb);
    }

    public void addSubMenus(JMenu parent, int number) {
        for (int i=1; i<=number; i++) {
            JMenu menu = new JMenu("Sub Menu " + i);
            parent.add(menu);

            addSubMenus(menu, number-1);
            addMenuItems(menu, number);
        }
    }

    public void addMenuItems(JMenu parent, int number) {
        for(int i=1; i<=number; i++) {
            parent.add(new JMenuItem("Item " + i));
        }
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                new MenuArrows();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}


文章来源: JMenu submenu little arrow icon indicator