3

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

谢谢您的帮助。

4

4 回答 4

7

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

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

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

代码将类似于:

JButton ok = SwingUtils.getDescendantOfType(JButton.class, dialog, "Text", "Ok");
ok.setBackground(...);
于 2011-05-04T03:19:03.567 回答
3

最简单的方法是创建您自己的 JDialog 并将按钮特性设置为您喜欢的内容。

于 2011-05-04T03:07:04.907 回答
3

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

在此处输入图像描述

于 2016-04-04T17:01:04.363 回答
2

在您的 JOptionPane 之前添加以下代码行

UIManager.put("Button.background", Color.white);
JOptionPane.showMessageDialog(null, "Project, Please");
于 2017-02-01T14:22:28.347 回答