Как изменить размер и шрифт 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");
использование CSS.
JOptionPane.showMessageDialog(this,
"<html><h1 style='font-family: Calibri; font-size: 36pt;'>Hello");
Я обнаружил, что в NIMBUS L&F изначально не установлен "messageFont" (UIManager.get ("OptionPane.messageFont") = = null).
поэтому, если вы хотите получить новый шрифт (/font-size) от стандартного, вы можете использовать ключ "OptionPane.шрифт" вместо (--> UIManager.get ("OptionPane.font")), который, по-видимому, никогда не возвращает null. А затем установите производный шрифт с помощью клавиши " OptionPane.messageFont".