Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改JOptionPane中的按钮背景_Java_Swing_Colors_Jbutton_Joptionpane - Fatal编程技术网

Java 如何更改JOptionPane中的按钮背景

Java 如何更改JOptionPane中的按钮背景,java,swing,colors,jbutton,joptionpane,Java,Swing,Colors,Jbutton,Joptionpane,我想知道是否有人知道是否可以更改JOptionPane中按钮的背景色。我知道如何使用UIManager更改整个JOptionPane背景,但知道我想要的是在JOptionPane中设置单独的OK按钮、cancelButton等以分离单独的颜色。如果我能做到,我会怎么做 感谢您的帮助。最简单的方法就是创建您自己的JDialog,并根据您的心意设置按钮特性。没有直接的方法可以做到这一点 但是如果您真的想尝试一下,那么您需要阅读JOptionPane API,该API提供了一些代码,向您展示如何在不使

我想知道是否有人知道是否可以更改
JOptionPane
中按钮的背景色。我知道如何使用
UIManager
更改整个
JOptionPane
背景,但知道我想要的是在
JOptionPane
中设置单独的OK按钮、cancelButton等以分离单独的颜色。如果我能做到,我会怎么做


感谢您的帮助。

最简单的方法就是创建您自己的JDialog,并根据您的心意设置按钮特性。

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

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

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

代码类似于:

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

您可以在
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]);

在JOptionPane之前添加下面的代码行

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

@Blender:我很确定问题是关于JavaSwing而不是html/css。为什么?一般来说,更改默认值不是最好的主意,一致的视觉效果是有原因的,更改它们可能会混淆用户。您不需要使用UIManager,因为您可以确定自己的JButton。+1。很高兴听到这个消息。我一直在找它。你知道SwingUtils发布的许可证吗?@Heisenbug,“关于”页面说你可以随意使用代码。