如何更改JOptionPane中的按钮背景

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

谢谢您的帮助。

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

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

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

代码如下:

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

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

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