我正在尝试使菜单栏项目和项目的项目变得越来越小,我之前已经在这里进行过一段时间的搜索(所以请不要将其标记为重复请)并且我没有发布任何帖子发现正在发挥作用。
我尝试了以下代码但没有成功:
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);
}
}
有任何线索吗?
答案 0 :(得分:3)
那是因为UIManager
类中没有"menuBar.font"
键,它应该是:
UIManager.put("MenuBar.font", f);
即。上限很重要或:
UIManager.put("MenuItem.font", f);
表示每个JMenuItem
的字体
以下是这些属性的list
还相关:Changing a JMenuBar's font
我没有看到它无法正常工作,如果我运行此代码,它对我来说很好
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 and Verifiable Example,下次请发布有效的代码,我也一样,所以我们可以复制粘贴,我没有使用actionListener
,因为问题与动作无关,而是与字体有关。或者Icon
,因为它也没有关系,我做了一个完整的示例代码,你可以复制粘贴,看看它是如何工作的,不需要修改任何东西,这就是你所要求的。
对于您需要致电的MenuBar
字体:
UIManager.put("Menu.font", f);
对于MenuItem
UIManager.put("MenuItem.font", f);
答案 1 :(得分:0)
如果您正在动态更新UI Manager属性(例如在GUI出现后),则在设置属性UI Manager属性后,您需要调用SwingUtilities.updateComponentTreeUI(Component)
。您需要传递要刷新的最高级别组件(在这种情况下,可能是您的顶级Window
或JFrame
)。