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,“关于”页面说你可以随意使用代码。