How to change background color of JOptionPane?

前端 未结 5 701
走了就别回头了
走了就别回头了 2020-12-09 12:01

I have added JOptionPane to my application but I do not know how to change background color to white?

`int option = JOptionPane.showConfirmDialog(bcfiDownloa         


        
相关标签:
5条回答
  • 2020-12-09 12:11

    By using the UIManager class

     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));
    

    or

     UIManager UI=new UIManager();
     UI.put("OptionPane.background", Color.white);
     UI.put("Panel.background", Color.white);
    
     JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.INFORMATION_MESSAGE);
    
    0 讨论(0)
  • 2020-12-09 12:12

    JOptionPane image

    For anyone having the same problem like above image, I found/adapted a solution. On my system, I got that result, whether I used the UIManager solution as others have posted, or made a JDialog and used jd.getContentPane().setBackground(Color.white). So here is the work-around I came up with, where you loop recursively through each component in the JOptionPane, and set each JPanel's background color:

    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]);
        }
    }
    

    In your code where you want to have the message pop-up, something along the lines of:

    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);
    

    Where JOptionPane pane and JDialog jd have previously been created. Hope this helps anyone who had that issue.

    0 讨论(0)
  • 2020-12-09 12:16

    Use this code if you have the same problem as erik k atwood. This solves the problem:

    UIManager.put("OptionPane.background", Color.WHITE);
    UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);
    
    0 讨论(0)
  • 2020-12-09 12:18

    Use something like this to change the background color just for this one message display and not the whole system...

        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);
    
    0 讨论(0)
  • 2020-12-09 12:27

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

    Put this code before you call your JOptionPane dialog like:

    UIManager.put("OptionPane.background", Color.decode("#3c6562"));
    UIManager.getLookAndFeelDefaults().put("Panel.background", Color.decode("#3c6562"));
        
    int input= JOptionPane.showConfirmDialog
    (
       null,
       "Close the programm?",
       "Exit",
       JOptionPane.YES_NO_OPTION
     );
    
     if(input == 0)
     {
        System.exit(0);
     }
    
    0 讨论(0)
提交回复
热议问题