更改菜单栏和菜单项字体
Change menu bar and menu items font
我正在尝试使菜单栏项目和项目的项目变大和变小,我之前在这里搜索过一点(所以请不要将其标记为重复)并且none我发现的帖子中有一部分有效。
我尝试了以下代码但没有成功:
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
class里面没有"menuBar.font"
键,应该是:
UIManager.put("MenuBar.font", f);
即大写很重要或:
UIManager.put("MenuItem.font", f);
每个 JMenuItem
的字体
这里是 list 这些属性
还相关:Changing a JMenuBar's font
编辑:添加了 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 and Verifiable Example,下次请post一个有效的,我也是这样,所以我们可以复制粘贴,我没有使用actionListener
因为问题与操作无关,而是与字体有关。或者 Icon
因为它也不相关,我做了一个完整的示例代码,您可以复制粘贴并查看它是如何工作的,而无需修改任何内容,这就是您所要求的。
MenuBar
字体需要调用:
UIManager.put("Menu.font", f);
而对于 MenuItem
UIManager.put("MenuItem.font", f);
如果您要即时更新 UI 管理器属性(例如在您的 GUI 出现之后),您需要在之后调用 SwingUtilities.updateComponentTreeUI(Component)
您设置 属性 UI 经理 属性。您需要传入要刷新的最高级别组件(在本例中,可能是您的最高级别 Window
或 JFrame
)。
我正在尝试使菜单栏项目和项目的项目变大和变小,我之前在这里搜索过一点(所以请不要将其标记为重复)并且none我发现的帖子中有一部分有效。
我尝试了以下代码但没有成功:
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
class里面没有"menuBar.font"
键,应该是:
UIManager.put("MenuBar.font", f);
即大写很重要或:
UIManager.put("MenuItem.font", f);
每个 JMenuItem
的字体
这里是 list 这些属性
还相关:Changing a JMenuBar's font
编辑:添加了 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 and Verifiable Example,下次请post一个有效的,我也是这样,所以我们可以复制粘贴,我没有使用actionListener
因为问题与操作无关,而是与字体有关。或者 Icon
因为它也不相关,我做了一个完整的示例代码,您可以复制粘贴并查看它是如何工作的,而无需修改任何内容,这就是您所要求的。
MenuBar
字体需要调用:
UIManager.put("Menu.font", f);
而对于 MenuItem
UIManager.put("MenuItem.font", f);
如果您要即时更新 UI 管理器属性(例如在您的 GUI 出现之后),您需要在之后调用 SwingUtilities.updateComponentTreeUI(Component)
您设置 属性 UI 经理 属性。您需要传入要刷新的最高级别组件(在本例中,可能是您的最高级别 Window
或 JFrame
)。