Как изменить размер и шрифт 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 ответов


Это очень легко. Панель 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", новый шрифт ("Arial", шрифт.Жирный, 14)); UIManager.getLookAndFeelDefaults ().put ("OptionPane.ontont", новый шрифт ("Arial", шрифт.Равнина, 12));

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

просто не забудьте установить его, прежде чем появится диалоговое окно JOptionPane. я просто положил его в первой строке main метод.

чтобы понять, почему я это делаю, док UIManager всегда полезно.

по умолчанию

UIManager управляет тремя наборами UIDefaults. В порядке, они:

по умолчанию разработчик. За редким исключением Swing не изменяет значения по умолчанию разработчика; они предназначены для изменения и использования разработчиком.

внешний вид по умолчанию. Значения по умолчанию look and feel предоставляются look and feel в момент установки в качестве текущего look and feel feel (вызывается setLookAndFeel ()). Внешний вид по умолчанию можно получить с помощью метода getLookAndFeelDefaults ().

системные значения по умолчанию. Системные значения по умолчанию предоставляются Swing. Вызов любого из различных методов get приводит к проверке каждого из значений по умолчанию, возвращая первое ненулевое значение. Например, вызов UIManager.getString ("Table.foreground") приводит к первой проверке настроек разработчика по умолчанию. Если застройщик по умолчанию содержит значение "Таблица.foreground " возвращается, в противном случае проверяется внешний вид по умолчанию, а затем системные значения по умолчанию. Важно отметить, что getDefaults возвращает пользовательский экземпляр UIDefaults с встроенной в него логикой разрешения. Например, UIManager.getDefaults().getString ("Table.передний план") эквивалентен UIManager.getString ("Table.передний план.)" Оба решения, используя алгоритм описал. Во многих местах документация использует слово defaults для ссылки на пользовательский экземпляр UIDefaults с логикой разрешения, как описано выше.

Итак, мы должны сначала изменить настройки по умолчанию для разработчиков. И метод UIManager.put(Object key, Object value) метод использовать.

public static Object put (ключ объекта, значение объекта)

сохраняет объект в настройках разработчика по умолчанию. Это метод покрытия для getDefaults().поставить(ключ, значение). Это влияет только на настройки разработчика по умолчанию, а не на систему или внешний вид по умолчанию.

параметры:

key-объект, указывающий ключ извлечения

value - объект для хранения; обратитесь к UIDefaults для получения подробной информации о том, как обрабатывается null

Returns: объект, возвращаемый UIDefaults.put (java.ленг.Объект, Ява.ленг.Объект)

Броски:

NullPointerException-если ключ равен 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

есть простой способ изменить шрифт по умолчанию в JOptionPane. Передайте строку, измененную в , что означает, что вы можете использовать <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


Я обнаружил, что в NIMBUS L&F изначально не установлен "messageFont" (UIManager.get ("OptionPane.messageFont") = = null).

поэтому, если вы хотите получить новый шрифт (/font-size) от стандартного, вы можете использовать ключ "OptionPane.шрифт" вместо (--> UIManager.get ("OptionPane.font")), который, по-видимому, никогда не возвращает null. А затем установите производный шрифт с помощью клавиши " OptionPane.messageFont".