Change menu bar and menu items font

后端 未结 2 833
再見小時候
再見小時候 2021-01-26 06:15

I\'m trying to make the menu bar items and the items of the items bigger and smaller, I\'ve seached here a bit before (so don\'t mark this as repeated please) and none of the po

2条回答
  •  再見小時候
    2021-01-26 06:45

    That's because there's not "menuBar.font" key in the UIManager class, it should be:

    UIManager.put("MenuBar.font", f);
    

    i.e. Caps are important or:

    UIManager.put("MenuItem.font", f);
    

    for each JMenuItem's font

    Here's a list of these properties

    Also related: Changing a JMenuBar's font


    EDIT: Added mcve

    I don't see where it's not working, if I run this code, it works fine for me

    import java.awt.Font;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    
    public class UIManagerFontChangeExample {
        
        private JFrame frame;
        private JLabel label;
        private JMenuItem item1, item2;
        private JMenu menu;
        private JMenuBar bar;
        
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    Font f = new Font("sans-serif", Font.PLAIN, 12);
                    UIManager.put("Menu.font", f);
                    UIManager.put("MenuItem.font", f);
                    UIManagerFontChangeExample example = new UIManagerFontChangeExample();
                    example.createAndShowGui();
                }
            });
        }
        
        public void createAndShowGui() {
            frame = new JFrame("Font changing example");
            label = new JLabel("This is a label");
            bar = new JMenuBar();
            menu = new JMenu("Menu");
            item1 = new JMenuItem("Item1");
            item2 = new JMenuItem("Item2");
            
            menu.add(item1);
            menu.add(item2);
            bar.add(menu);
            
            frame.add(label);
            frame.setJMenuBar(bar);
            
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
    }
    

    Before changing font:

    After changing font:

    The code I added above is called: Minimal, Complete and Verifiable Example, next time, please post a valid one, the same I did, so we can copy-paste, I didn't use an actionListener because the question isn't related to the actions, but the font. Or Icon because it's not related either, I did a full example code that you can copy-paste and see how it works, without modifying anything, that's what you were asked for.

    For the MenuBar font you need to call:

    UIManager.put("Menu.font", f);
    

    And for the MenuItem

    UIManager.put("MenuItem.font", f);
    

提交回复
热议问题