【问题标题】:How to add Background color for JOptionPane Completely?如何为 JOptionPane 完全添加背景颜色?
【发布时间】:2016-08-29 12:48:30
【问题描述】:

我没有获得 JOptionPane 的完整背景颜色。

下面是我的输出屏幕之一:

http://i.stack.imgur.com/i4tvh.png

还有我的代码:

JFrame frame1 = new JFrame("Showing Error Message");
                    UIManager UI=new UIManager();
                    UI.put("OptionPane.background", Color.BLUE);
                    UI.put("OptionPane.messagebackground", Color.BLUE);
                    UI.put("Panel.background", Color.BLUE);
                    JOptionPane.showMessageDialog(frame1,errorMessage1);

【问题讨论】:

  • 您使用哪种 Look-n-Feel?
  • 我正在使用 Nimbus Look-n-Feel

标签: swing awt


【解决方案1】:

在 nimbus 外观和感觉中,这些所有代码都不可用。

所以解决办法是,

UIManager.put("control", new Color(0, 0, 0));

这也称为“Dark Nimbus”,在你的主框架的 main 方法的顶部添加这个。 所以它会自动改变All JOptionPane的背景。

而且你也不能改变按钮背景

UIManager.put("OptionPane.buttonBackground", BLACK);

所以你应该使用,

UIManager.put("nimbusBase", new Color(0, 0, 0));

记住——但不幸的是,这段代码会改变你所有按钮等的背景。所以你必须将*.setBackground(...); 添加到所有其他对象。

如果你想改变 JOptionPane 的前景,你应该使用

UIManager.put("text", new Color(255, 255, 255));

不幸的是,这将改变您所有文本的前景。

所有这些代码都称为黑暗雨云。

如果您使用的是 nimbus,您可以尝试这些 UIManager 代码来自定义 nimbus 的外观。

UIManager.put("control", new Color(0, 0, 0));
UIManager.put("info", new Color(0, 0, 0));
UIManager.put("nimbusBase", new Color(0, 0, 0));
UIManager.put("nimbusAlertYellow", new Color(248, 187, 0));
UIManager.put("nimbusDisabledText", new Color(255, 255, 255));
UIManager.put("nimbusFocus", new Color(115, 164, 209));
UIManager.put("nimbusGreen", new Color(176, 179, 50));
UIManager.put("nimbusInfoBlue", new Color(66, 139, 221));
UIManager.put("nimbusLightBackground", new Color(0, 0, 0));
UIManager.put("nimbusOrange", new Color(191, 98, 4));
UIManager.put("nimbusRed", new Color(169, 46, 34));
UIManager.put("nimbusSelectedText", new Color(255, 255, 255));
UIManager.put("nimbusSelectionBackground", new Color(18, 134, 175));
UIManager.put("text", new Color(255, 255, 255));

您可以尝试这些代码。在我的项目中,nimbus 看起来像

但我始终建议使用“Flatleaf”(搜索 google“FlatLafLookAndFeel”或访问 jar.download.com”)。它是专业的,您可以全部更改为自己的。

【讨论】:

【解决方案2】:

首先,UIManager 的公共方法是静态的。创建 UIManager 的实例是不正确、具有误导性和毫无意义的。调用这些方法的正确方法是:

UIManager.put("OptionPane.background", Color.BLUE);
UIManager.put("OptionPane.messagebackground", Color.BLUE);
UIManager.put("Panel.background", Color.BLUE);

这是整个样本。

import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class Main extends JFrame
{
   public static void main(String []args) {
      UIManager.put("OptionPane.background", Color.blue);
      UIManager.put("Panel.background", Color.blue);
      UIManager.put("Button.background", Color.white);

      String value = JOptionPane.showInputDialog("Enter your name");
      System.out.println("Hello " + value);

      // exit awt thread
      System.exit(1);
   }
}

【讨论】:

  • 在你的例子中我还需要文本框颜色
  • UIManager.put("TextField.background", Color.BLUE);我没试过。但是您需要尝试 thebadprogrammer.com/swing-uimanager-keys 内部的键
  • @honey1 请注意,这将影响应用这些设置后创建的 UI 中的所有面板和按钮
  • 我的看法还是一样!
猜你喜欢
  • 1970-01-01
  • 2014-04-05
  • 2015-11-01
  • 2012-02-22
  • 2018-01-22
  • 2019-02-28
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多