有谁知道如何控制对JMenu的子菜单中出现的小小的箭头的显示?
我可以改变它? 我可以禁用它? 我能移动吗?
另外,我注意到,该箭头不上顶级JMenus出现,只有当他们有其他的JMenu的子菜单。 这种不一致让我很烦,因为我的JMenuItem和JMenu的的混合贴在我的JMenuBar的根,所以我希望它一直表示它。 总之要做到这一点呢?
谢谢!
有谁知道如何控制对JMenu的子菜单中出现的小小的箭头的显示?
我可以改变它? 我可以禁用它? 我能移动吗?
另外,我注意到,该箭头不上顶级JMenus出现,只有当他们有其他的JMenu的子菜单。 这种不一致让我很烦,因为我的JMenuItem和JMenu的的混合贴在我的JMenuBar的根,所以我希望它一直表示它。 总之要做到这一点呢?
谢谢!
看看在Menu.arrowIcon
UI属性
(感谢AndrewThompson用于测试代码)。
Doining您应用的修改,这将影响所有创建的菜单。
等你以后的init外观和创建任何菜单调用之前UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null);
我只想说,我认为这是一个可怕的想法,并从这样做会极力阻止你。
这支箭没有出现在顶级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);
}
}