更改菜单栏和菜单项字体

我正在尝试使菜单栏项目和项目的项目变得越来越小,我之前已经在这里进行过一段时间的搜索(所以请不要将其标记为重复请)并且我发现的任何post都没有工作。

我尝试了以下代码但没有成功:

Font f = new Font("sans-serif", Font.PLAIN, 12); UIManager.put("menuBar.font", f); 

 menuBar.setFont(new Font(menuBar.getFont().getFontName(), menuBar.getFont().getStyle(), 12)); 

这是我的代码,我正在尝试编辑字体:

 private class foo{ private JMenu mnArchivo; private JMenuBar menuBar; menuBar = new JMenuBar(); frmAdministracinHospital.setJMenuBar(menuBar); JRadioButtonMenuItem rdbtnmntmGrande = new JRadioButtonMenuItem("Grande"); rdbtnmntmGrande.addActionListener(new MiGrandeActionListener()); rdbtnmntmGrande.setIcon(new ImageIcon(PrincipalWindow.class.getResource("/presentacion/fontbig.png"))); buttonGroup.add(rdbtnmntmGrande); mnTamanoFuente.add(rdbtnmntmGrande); private class MiGrandeActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { Font f = new Font(menuBar.getFont().getFontName(), menuBar.getFont().getStyle(), 12); UIManager.put("Menu.font", f); } } 

有任何线索吗?

那是因为UIManager类中没有"menuBar.font"键,它应该是:

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

即上限很重要或:

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

对于每个JMenuItem的字体

这是这些属性的列表

还相关: 更改JMenuBar的字体


编辑:添加了mcve

我不知道它在哪里工作,如果我运行这个代码,它对我来说很好

 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); } } 

在更改字体之前:

在此处输入图像描述

更改字体后:

在此处输入图像描述

我上面添加的代码叫做: Minimal,Complete和Verifiable示例 ,下次请发一个有效的,我也一样,所以我们可以复制粘贴,我没有使用actionListener因为这个问题不相关对于动作,但字体。 或者Icon因为它也没有关系,我做了一个完整的示例代码,您可以复制粘贴并查看它是如何工作的,无需修改任何内容,这就是您所要求的。

对于MenuBar字体,您需要调用:

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

而对于MenuItem

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

如果您正在动态更新UI Manager属性(例如在GUI出现之后),则需要在设置属性UI Manager属性后调用SwingUtilities.updateComponentTreeUI(Component) 。 您需要传递要刷新的最高级别组件(在这种情况下,可能是您的顶级WindowJFrame )。