你如何改变joptionpane的大小和字体?

时间:2014-11-13 16:41:39

标签: java swing netbeans fonts joptionpane

您可以更改JOptionPane文本的字体和大小吗?我尝试过它,只有当我"运行文件"在那个特定的java类上。如果您启动整个项目,它不会更改字体。我只想改变一个特定的JOptionPane而不是全部。

以下是代码:

 UIManager.put("OptionPane.messageFont", new FontUIResource(new Font(  
          "Arial", Font.BOLD, 18)));       
 JOptionPane.showMessageDialog(null,"MESSAGE","ERROR",JOptionPane.WARNING_MESSAGE);         

4 个答案:

答案 0 :(得分:15)

这真的很容易。 JOption窗格不仅接受字符串,还接受组件。因此,您可以创建标签设置其字体并将其用作消息。

JLabel label = new JLabel("MESSAGE");
label.setFont(new Font("Arial", Font.BOLD, 18));
JOptionPane.showMessageDialog(null,label,"ERROR",JOptionPane.WARNING_MESSAGE);

我不明白为什么没有人在

之前回答这个问题

答案 1 :(得分:4)

这是我们使用的方式:

UIManager.getLookAndFeelDefaults()。put(" OptionPane.messageFont",new font(" Arial",Font.BOLD,14));     UIManager.getLookAndFeelDefaults()。put(" OptionPane.buttonFont&#34 ;, new Font(" Arial",Font.PLAIN,12));     

UIManager.put("OptionPane.messageFont", new Font("Arial", Font.BOLD, 14));
UIManager.put("OptionPane.buttonFont", new Font("Arial", Font.PLAIN, 12));

只需记住在任何JOptionPane对话框出现之前设置它。我只是将它放在main方法的第一行。

要知道为什么我这样做,UIManager的DOC总是有用的。

  

默认值

     

UIManager管理三套UIDefaults。按顺序,它们是:

     

开发者默认值。除了少数例外,Swing不会改变开发者默认值;这些是供开发人员修改和使用的。

     

外观和默认情况。外观和默认设置由安装时的外观提供,因为当前外观(调用setLookAndFeel())。可以使用getLookAndFeelDefaults()方法获取外观默认值。

     

系统默认值。系统默认值由Swing提供。   调用任何各种get方法会导致检查每个默认值,然后返回第一个非null值。例如,调用UIManager.getString(" Table.foreground")会导致首先检查开发人员默认值。如果开发人员默认值包含" Table.foreground"的值。返回它,否则检查外观默认值,然后是系统默认值。   重要的是要注意getDefaults返回UIDefaults的自定义实例,并在其中内置此解析逻辑。例如,UIManager.getDefaults()。getString(" Table.foreground")等同于UIManager.getString(" Table.foreground")。两者都使用刚刚描述的算法解析。在许多地方,文档使用单词defaults来引用UIDefaults的自定义实例,其解析逻辑如前所述。

因此,我们应该首先更改开发人员默认值。方法UIManager.put(Object key, Object value)是要使用的方法。

  

public static Object put(Object key,Object value)

     

在开发人员默认值中存储对象。这是getDefaults()。put(key,value)的封面方法。这仅影响开发人员默认值,而不影响系统或外观默认值。

     

参数:

     

key - 指定检索关键字的对象

     

value - 要存储的对象;有关如何处理null的详细信息,请参阅UIDefaults

     

返回:UIDefaults.put返回的Object(java.lang.Object,java.lang.Object)

     

抛出:

     

NullPointerException - 如果key为null

这正是我正在寻找的:没有额外的面板,没有更多的问题覆盖JOptionPane的默认用户界面。

JOptionPane中的属性名称的完整列表位于:

http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJOptionPaneLookandFeel.htm

Property String                                 Object Type

OptionPane.actionMap                            ActionMap
OptionPane.background                           Color
OptionPane.border                               Border
OptionPane.buttonAreaBorder                     Border
OptionPane.buttonClickThreshhold                Integer
OptionPane.buttonFont                           Font
OptionPane.buttonOrientation                    Integer
OptionPane.buttonPadding                        Integer
OptionPane.cancelButtonMnemonic                 String
OptionPane.cancelButtonText                     String
OptionPane.cancelIcon                           Icon
OptionPane.errorDialog.border.background        Color
OptionPane.errorDialog.titlePane.background     Color
OptionPane.errorDialog.titlePane.foreground     Color
OptionPane.errorDialog.titlePane.shadow         Color
OptionPane.errorIcon                            Icon
OptionPane.errorSound                           String
OptionPane.font                                 Font
OptionPane.foreground                           Color
OptionPane.informationIcon                      Icon
OptionPane.informationSound                     String
OptionPane.inputDialogTitle                     String
OptionPane.isYesLast                            Boolean
OptionPane.messageAnchor                        Integer
OptionPane.messageAreaBorder                    Border
OptionPane.messageFont                          Font
OptionPane.messageForeground                    Color
OptionPane.messageDialogTitle                   String
OptionPane.minimumSize                          Dimension
OptionPane.noButtonMnemonic                     String
OptionPane.noButtonText                         String
OptionPane.noIcon                               Icon
OptionPane.okButtonMnemonic                     String
OptionPane.okButtonText                         String
OptionPane.okIcon                               Icon
OptionPane.questionDialog.border.background     Color
OptionPane.questionDialog.titlePane.background  Color
OptionPane.questionDialog.titlePane.foreground  Color
OptionPane.questionDialog.titlePane.shadow      Color
OptionPane.questionIcon                         Icon
OptionPane.questionSound                        String
OptionPane.sameSizeButtons                      Boolean
OptionPane.separatorPadding                     Integer
OptionPane.setButtonMargin                      Boolean
OptionPane.titleText                            String
OptionPane.warningDialog.border.background      Color
OptionPane.warningDialog.titlePane.background   Color
OptionPane.warningDialog.titlePane.foreground   Color
OptionPane.warningDialog.titlePane.shadow       Color
OptionPane.warningIcon                          Icon
OptionPane.warningSound                         String
OptionPane.windowBindings                       Object[ ]
OptionPane.yesButtonMnemonic                    String
OptionPane.yesButtonText                        String
OptionPane.yesIcon                              Icon
OptionPaneUI                                    String

答案 2 :(得分:2)

有一种简单的方法可以更改JOptionPane中的默认字体。传递以html格式修改的字符串,这意味着您可以使用<font>标记甚至CSS。

  

使用<font>代码。

JOptionPane.showMessageDialog(this, 
        "<html><font face='Calibri' size='15' color='red'>Hello");

font tag

  

使用CSS。

JOptionPane.showMessageDialog(this, 
        "<html><h1 style='font-family: Calibri; font-size: 36pt;'>Hello");

using css

答案 3 :(得分:0)

我检测到最初在NIMBUS L&F中未设置'messageFont'(UIManager.get(“ OptionPane.messageFont”)== null)。

因此,如果要从默认字体派生新字体(/ font-size),可以使用键“ OptionPane.font”代替(-> UIManager.get(“ OptionPane.font”)),该键显然永远不会返回null。然后使用“ OptionPane.messageFont”键设置派生字体。