如何更改 JOptionPane 内的按钮背景

发布于 2024-11-04 22:08:47 字数 176 浏览 4 评论 0原文

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

感谢您的帮助。

I was wondering if anybody knew if it was possible to change the background color on the buttons inside a JOptionPane. I know how to change the entire JOptionPane background using a UIManager, but know what I want is to set the individual okButton, cancelButton, and so on within the JOptionPane to separate individual colors. If I can do this, how would I do this?

Thanks for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓦然回首 2024-11-11 22:08:48

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

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

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

代码类似于:

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

There is no direct way to do this.

But if you really want to give it a try, then you will need to read the JOptionPane API which gives code that shows you how to manually create and display a JOptionPane without using the showXXX methods.

Using this approach you now have access to the actuall JDialog. Then you can use Darryl's SwingUtils to access the individual buttons and then set the background.

The code would be something like:

JButton ok = SwingUtils.getDescendantOfType(JButton.class, dialog, "Text", "Ok");
ok.setBackground(...);
想你的星星会说话 2024-11-11 22:08:48

最简单的方法是创建您自己的 JDialog 并根据您的喜好设置按钮特性。

Simplest would be to just create your own JDialog and set the button characteristics to your heart's content.

单身狗的梦 2024-11-11 22:08:48

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

输入图片此处描述

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

听你说爱我 2024-11-11 22:08:48

在 JOptionPane 之前添加以下代码行

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

Add the the line of code below before your JOptionPane

UIManager.put("Button.background", Color.white);
JOptionPane.showMessageDialog(null, "Project, Please");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文