如何更改JOptionPane的背景颜色?

我已将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) { }` 

通过使用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); 

JOptionPane图片

对于在图像中出现问题的任何人,我找到/改编了一个解决方案。 在我的系统上,我得到了这个结果,我是否使用了其他人发布的UIManager解决方案,或者创建了一个JDialog并使用了jd.getContentPane()。setBackground(Color.white)。 所以这里是我提出的解决方法,在那里递归循环遍历JOptionPane中的每个组件,并设置每个JPanel的背景颜色:

 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 。 希望这可以帮助那些遇到这个问题的人。

使用这样的东西来改变这一个消息显示的背景颜色而不是整个系统……

  Object paneBG = UIManager.get("OptionPane.background"); Object panelBG = UIManager.get("Panel.background"); UIManager.put("OptionPane.background", new Color(...)); UIManager.put("Panel.background", new Color(...)); int ret = messageBox(msg, null, (short)type); UIManager.put("OptionPane.background", paneBG); UIManager.put("Panel.background", panelBG); 

如果您遇到与erik k atwood相同的问题,请使用此代码。 这解决了这个问题:

 UIManager.put("OptionPane.background", Color.WHITE); UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);