Как изменить фон кнопки внутри JOptionPane - PullRequest
3 голосов
/ 04 мая 2011

Мне было интересно, знает ли кто-нибудь, можно ли изменить цвет фона на кнопках внутри JOptionPane.Я знаю, как изменить весь JOptionPane фон, используя UIManager, но знаю, что мне нужно, чтобы установить отдельные okButton, cancelButton и т. Д. Внутри JOptionPane для разделения отдельных цветов.Если я могу это сделать, как бы я это сделал?

Спасибо за помощь.

Ответы [ 4 ]

7 голосов
/ 04 мая 2011

Нет прямого способа сделать это.

Но если вы действительно хотите попробовать, вам нужно прочитать API JOptionPane, который дает код, показывающий, как вручную создавать и отображать JOptionPane без использования методов showXXX.

Используя этот подход, у вас теперь есть доступ к актуальному JDialog. Затем вы можете использовать Darryl SwingUtils для доступа к отдельным кнопкам и затем установить фон.

Код будет выглядеть примерно так:

JButton ok = SwingUtils.getDescendantOfType(JButton.class, dialog, "Text", "Ok");
ok.setBackground(...);
3 голосов
/ 04 мая 2011

Проще всего было бы просто создать свой собственный JDialog и установить характеристики кнопки в соответствии с вашим сердцем.

0 голосов
/ 01 февраля 2017

Добавьте строку кода ниже перед вашим JOptionPane

UIManager.put("Button.background", Color.white);
JOptionPane.showMessageDialog(null, "Project, Please");
0 голосов
/ 04 апреля 2016

Вы можете использовать свои собственные кнопки с вашими характеристиками в showOptionDialog.Я думаю, это не лучшее решение, но оно просто работает.

JButton button = new JButton("OK");
button.setBackground(Color.BLACK);
button.setForeground(Color.WHITE);
button.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent actionEvent) {
       JOptionPane.getRootFrame().dispose();
   }
});
JButton[] buttons = { button };
OptionPane.showOptionDialog(null, "Test Message", "Dialog", JOptionPane.OK_OPTION, JOptionPane.INFORMATION_MESSAGE, new ImageIcon(), buttons, buttons[0]);

enter image description here

...