更改菜单栏和菜单项字体
我正在尝试使菜单栏项目和项目的项目变得越来越小,我之前已经在这里进行过一段时间的搜索(所以请不要将其标记为重复请)并且我发现的任何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)
。 您需要传递要刷新的最高级别组件(在这种情况下,可能是您的顶级Window
或JFrame
)。