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

你能改变JOptionPane文本的字体和大小吗? 我尝试过它,只有当我在特定的java类上“运行文件”时它才有效。 如果启动整个项目,则不会更改字体。 我只想改变一个特定的JOptionPane而不是全部。

这是代码:

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

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

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

我不明白为什么之前没有人回答这个问题

这是我们使用的方式:

UIManager.getLookAndFeelDefaults()。put(“OptionPane.messageFont”,new Font(“Arial”,Font.BOLD,14)); UIManager.getLookAndFeelDefaults()。put(“OptionPane.buttonFont”,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 – 指定检索关键字的Object

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

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

抛出:

NullPointerException – 如果key为null

这正是我正在寻找的:没有额外的面板,没有更多的麻烦覆盖JOptionPane的默认UI。

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 

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

使用标签。

 JOptionPane.showMessageDialog(this, "Hello"); 

字体标记

使用CSS。

 JOptionPane.showMessageDialog(this, "

Hello");

用css

我发现在NIMBUS L&F中最初没有设置’messageFont’(UIManager.get(“OptionPane.messageFont”)== null)。

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