如何在整个框架或对话框中使用字体样式?

时间:2009-12-12 09:25:09

标签: java swing

我有一个主框架,它有一个菜单栏,让用户可以更改我程序中所有文本的字体。我可以设置主框架的字体,但我如何设置所有框架的更改和对话框???

4 个答案:

答案 0 :(得分:1)

您可以使用UIManager的某位王来记录要使用的字体,然后使用Change Font操作在更新UI Swing组件之前更新UIManager中的字体。

This thread对此主题的不同可能解决方案有更多的了解。

答案 1 :(得分:0)

Swing application framework有一个功能强大的资源管理器,允许您通过属性文件自定义字体和其他外观设置。它具有很大的灵活性,允许您为每个对话框指定这些类型的设置。可以找到资源管理器的简介here

答案 2 :(得分:0)

我们这样做是为了覆盖我们使用的大多数组件的字体。

    Font font = /*some font*/;

    UIManager.put("Button.font", font); //frozen
    UIManager.put("ToggleButton.font", font); //frozen
    UIManager.put("RadioButton.font", font); //frozen
    UIManager.put("CheckBox.font", font); //frozen
    UIManager.put("ColorChooser.font", font); //frozen
    UIManager.put("ComboBox.font", font); //frozen
    UIManager.put("Label.font", font); //frozen
    UIManager.put("List.font", font); //frozen
    UIManager.put("MenuBar.font", font); //frozen
    UIManager.put("MenuItem.font", font); //frozen
    UIManager.put("RadioButtonMenuItem.font", font); //frozen
    UIManager.put("CheckBoxMenuItem.font", font); //frozen
    UIManager.put("Menu.font", font); //frozen
    UIManager.put("PopupMenu.font", font); //frozen
    UIManager.put("OptionPane.font", font); //frozen
    UIManager.put("Panel.font", font); //frozen
    UIManager.put("ProgressBar.font", font); //frozen
    UIManager.put("ScrollPane.font", font); //frozen
    UIManager.put("Viewport.font", font); //frozen
    UIManager.put("TabbedPane.font", font); //frozen
    UIManager.put("Table.font", font); //frozen
    UIManager.put("TableHeader.font", font); //frozen
    UIManager.put("TextField.font", font); //frozen
    UIManager.put("PasswordField.font", font); //frozen
    UIManager.put("TextArea.font", font); //frozen
    UIManager.put("TextPane.font", font); //frozen
    UIManager.put("EditorPane.font", font); //frozen
    UIManager.put("TitledBorder.font", font); //frozen
    UIManager.put("ToolBar.font", font); //frozen
    UIManager.put("ToolTip.font", font); //frozen
    UIManager.put("Tree.font", font); //frozen
    UIManager.put("OptionPane.messsageFont", font); // frozen
    UIManager.put("OptionPane.buttonFont", font); //frozen

答案 3 :(得分:0)

您可以使用下面的代码为所有具有可设置字体的UIManager元素设置字体。

如果元素没有Font属性,则UIManager.getFont(key)返回null

    Font font = new Font("Arial", Font.PLAIN, 10);
    Enumeration keys = UIManager.getLookAndFeelDefaults().keys();
    while (keys.hasMoreElements())
    {
       Object key = keys.nextElement();
       if (UIManager.getFont(key) != null)
       {
          UIManager.put(key, font);
       }
    }

但是,诀窍是在应用程序的早期(例如,字面上是主文件的第一行)执行此操作,或者稍后使用SwingUtilities.updateComponentTreeUI(<your top component>);进行更新。