有誰知道如何控制出現在JMenu子菜單上的小小箭頭的顯示?JMenu子菜單小箭頭圖標指示器
我可以改變它嗎? 我可以禁用它嗎? 我可以移動它嗎?
此外,我注意到這個箭頭只有當他們是其他JMenu的子菜單時纔會出現在頂層JMenus上。由於我將JMenuItem和JMenu連接到JMenuBar的根目錄,所以我希望它總是能夠指示它,這種不一致性會讓我很煩惱。無論如何也要做到這一點?
謝謝!
有誰知道如何控制出現在JMenu子菜單上的小小箭頭的顯示?JMenu子菜單小箭頭圖標指示器
我可以改變它嗎? 我可以禁用它嗎? 我可以移動它嗎?
此外,我注意到這個箭頭只有當他們是其他JMenu的子菜單時纔會出現在頂層JMenus上。由於我將JMenuItem和JMenu連接到JMenuBar的根目錄,所以我希望它總是能夠指示它,這種不一致性會讓我很煩惱。無論如何也要做到這一點?
謝謝!
此箭頭不出現在頂層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);
}
}
看看在Menu.arrowIcon
UI屬性
(感謝AndrewThompson的測試代碼)。
這樣做會影響您應用修改後創建的所有菜單。
等你以後的init外觀和感覺,再創建任何菜單調用UIManager.getLookAndFeelDefaults().put("Menu.arrowIcon", null);
我只想說,我認爲這是一個可怕的想法,並會極力阻止你這樣做。
+1,儘管你[潛伏着](http://en.wiktionary.org/wiki/bury_the_lead)。 :-) – trashgod
這是有幫助的,因爲沒有辦法將其添加到頂級菜單,那麼我將完全刪除它 – springcorn
坦率地說,雖然我希望通過代碼禁用它 – springcorn
這可能取決於您使用的L&F – Jeffrey
我正在使用MetalLookAndFeel。你能否以特定的外觀和感覺禁用它? – springcorn
*「只有當它們是其他JMenu的子菜單時,此箭頭纔會出現在頂層JMenus上。」* Huh?你能用[code](http://sscce.org/)來表達嗎? –