有人知道如何控制jmenu子菜单上出现的小箭头的显示吗?我能换一下吗?我可以禁用它吗?我能移动它吗?另外,我注意到,只有当顶级jmenus是其他jmenu的子菜单时,这个箭头才出现在它们上面。这种不一致性让我很恼火,因为jmenuitem和jmenu混合在jmenubar的根上,所以我希望它总是能指示它。无论如何也要这么做?谢谢!
kxxlusnw1#
仅当顶级jmenus是其他jmenu的子菜单时,此箭头才会出现在顶级jmenus上。它的外观似乎(单调地)一致,在这里使用金属。
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); } }
t3psigkw2#
看一看这个 Menu.arrowIcon ui属性(感谢andrewthompson提供的测试代码)。执行此操作将影响应用修改后创建的所有菜单。因此,在您初始化外观和感觉之后,在您创建任何菜单之前 UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null); 我只想说,我认为这是一个可怕的想法,并会强烈劝阻你这样做。
Menu.arrowIcon
UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null);
2条答案
按热度按时间kxxlusnw1#
仅当顶级jmenus是其他jmenu的子菜单时,此箭头才会出现在顶级jmenus上。
它的外观似乎(单调地)一致,在这里使用金属。
t3psigkw2#
看一看这个
Menu.arrowIcon
ui属性(感谢andrewthompson提供的测试代码)。
执行此操作将影响应用修改后创建的所有菜单。
因此,在您初始化外观和感觉之后,在您创建任何菜单之前
UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null);
我只想说,我认为这是一个可怕的想法,并会强烈劝阻你这样做。