如何更改JOptionPane中的按钮背景

时间:2011-05-04 02:57:45

标签: java swing colors jbutton joptionpane

我想知道是否有人知道是否可以更改JOptionPane内按钮的背景颜色。我知道如何使用JOptionPane更改整个UIManager背景,但知道我想要的是在JOptionPane内设置单独的okButton,cancelButton等,以分隔各个颜色。如果我能做到这一点,我该怎么做?

感谢您的帮助。

4 个答案:

答案 0 :(得分:7)

没有直接的方法可以做到这一点。

但是如果你真的想尝试一下,那么你需要阅读JOptionPane API,它提供了一些代码,告诉你如何在不使用showXXX方法的情况下手动创建和显示JOptionPane。

使用这种方法,您现在可以访问实际的JDialog。然后,您可以使用Darryl的SwingUtils访问各个按钮,然后设置背景。

代码如下:

JButton ok = SwingUtils.getDescendantOfType(JButton.class, dialog, "Text", "Ok");
ok.setBackground(...);

答案 1 :(得分:3)

最简单的方法就是创建自己的JDialog并根据内心设置按钮特征。

答案 2 :(得分:0)

You can use your own buttons with yours characteristics in showOptionDialog. I guess it is not the best solution, but it simply works.

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

答案 3 :(得分:0)

在JOptionPane之前添加以下代码行

UIManager.put("Button.background", Color.white);
JOptionPane.showMessageDialog(null, "Project, Please");