如何更改JOptionPane的背景颜色?

2022-09-04 00:48:15

我已将 JOptionPane 添加到我的应用程序中,但我不知道如何将背景色更改为白色?

`int option = JOptionPane.showConfirmDialog(bcfiDownloadPanel,
            new Object[]{"Host: " + source, panel},
            "Authorization Required",
            JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.PLAIN_MESSAGE
    );

    if (option == JOptionPane.OK_OPTION) {                  }`

答案 1

通过使用 UIManager

 import javax.swing.UIManager;

 UIManager UI=new UIManager();
 UI.put("OptionPane.background",new ColorUIResource(255,0,0));
 UI.put("Panel.background",new ColorUIResource(255,0,0));

 UIManager UI=new UIManager();
 UI.put("OptionPane.background", Color.white);
 UI.put("Panel.background", Color.white);

 JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.INFORMATION_MESSAGE);

答案 2

JOptionPane image

对于任何遇到与上图相同的问题的人,我找到/改编了一个解决方案。在我的系统上,我得到了这个结果,无论我是像其他人发布的那样使用UIManager解决方案,还是制作了JDialog并使用.因此,这是我想到的解决方法,您可以在其中以递归方式循环遍历 JOptionPane 中的每个组件,并设置每个 JPanel 的背景色:jd.getContentPane().setBackground(Color.white)

private void getComponents(Container c){

    Component[] m = c.getComponents();

    for(int i = 0; i < m.length; i++){

        if(m[i].getClass().getName() == "javax.swing.JPanel")
            m[i].setBackground(Color.white);

        if(c.getClass().isInstance(m[i]))
            getComponents((Container)m[i]);
    }
}

在要弹出消息的代码中,内容如下:

pane = new JOptionPane("Your message here", 
                JOptionPane.PLAIN_MESSAGE ,JOptionPane.DEFAULT_OPTION);
        getComponents(pane);
        pane.setBackground(Color.white);
        jd = pane.createDialog(this, "Message");
        jd.setVisible(true);

在何处和之前已创建。希望这对任何有这个问题的人都有帮助。JOptionPane paneJDialog jd


推荐