Как увеличить кнопки в диалоговых окнах JOptionPane?

Строка кода ниже отображает диалоговое окно с двумя кнопками: «Да» и «Нет». Я хочу, чтобы эти две кнопки были как минимум в 3 раза больше фактического размера по умолчанию. Я понимаю, что могу создать настраиваемый JFrame и добавить кнопку и установить размер, но у меня есть множество диалоговых окон; не кажется практичным.

JOptionPane.showConfirmDialog(null, "Did you eat", "Confirmation", JOptionPane.YES_NO_OPTION);

Причина, по которой я хочу сделать кнопки больше, заключается в том, что я увеличил размер шрифта диалоговых окон (одна строка кода повлияла на все диалоговые окна в моем коде). И маленький (по умолчанию) размер кнопок теперь выглядит неуклюжим по сравнению с многословием.

Итак, как я могу манипулировать размерами кнопок диалогового окна JOptionPane?


person razshan    schedule 25.10.2010    source источник


Ответы (2)


Вам нужно будет создать экземпляр JOptionPane и установить новый PreferredSize(). Использование setSize() не работает должным образом. Например:

public static void showMessageBox(final String strTitle, final String strMessage)
{
        //Redone for larger OK button
         JOptionPane theOptionPane = new JOptionPane(strMessage,JOptionPane.INFORMATION_MESSAGE);
         JPanel buttonPanel = (JPanel)theOptionPane.getComponent(1);
        // get the handle to the ok button
        JButton buttonOk = (JButton)buttonPanel.getComponent(0);
        // set the text
        buttonOk.setText(" OK ");
        buttonOk.setPreferredSize(new Dimension(100,50));  //Set Button size here
        buttonOk.validate();
        JDialog theDialog = theOptionPane.createDialog(null,strTitle);
        theDialog.setVisible(true);  //present your new optionpane to the world.
}
person Aries    schedule 22.03.2011

Добавление этого перед диалоговыми окнами изменит шрифт текста кнопки; тем самым увеличивая размеры кнопки. Обязательно импортируйте это:

import java.awt.Font; 
import javax.swing.plaf.FontUIResource; 




UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("ARIAL",Font.PLAIN,35))); 

Если вы хотите использовать другой шрифт для определенного диалогового окна, а затем вернуться к тому, который вы использовали, все, что вам нужно сделать, это ввести эту строку кода и изменить размер шрифта. затем после диалогового окна верните исходный. Это как бы переопределяет его каждый раз, когда вы это делаете.

person razshan    schedule 29.10.2010