Search code examples
javaswingjtextfieldlook-and-feelnimbus

Setting text background color?


How can I set text background color in JOptionPane?

Image:

enter image description here

UIManager UI = new UIManager();
UI.put("OptionPane.background", Color.white);
UIManager.put("Button.background", Color.white);
UI.put("Panel.background", Color.white);
UI.put("OptionPane.foreground", Color.white);
UI.put("OptionPane.messagebackground", Color.white);
UI.put("OptionPane.textbackground", Color.white);
UI.put("OptionPane.warningDialog.titlePane.shadow", Color.white);
UI.put("OptionPane.warningDialog.border.background", Color.white);
UI.put("OptionPane.warningDialog.titlePane.background", Color.white);
UI.put("OptionPane.warningDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.questionDialog.border.background", Color.white);
UI.put("OptionPane.questionDialog.titlePane.background", Color.white);
UI.put("OptionPane.questionDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.questionDialog.titlePane.shadow", Color.white);
UI.put("OptionPane.messageForeground", Color.white);
UI.put("OptionPane.foreground", Color.white);
UI.put("OptionPane.errorDialog.border.background", Color.white);
UI.put("OptionPane.errorDialog.titlePane.background", Color.white);
UI.put("OptionPane.errorDialog.titlePane.foreground", Color.white);
UI.put("OptionPane.errorDialog.titlePane.shadow", Color.white);

JOptionPane.showMessageDialog(null, "Hello world", "HELLO WORLD", JOptionPane.INFORMATION_MESSAGE);

Solution

  • Why not you simply add a custom JPanel at this place as shown below :

    JOptionPane.showMessageDialog(frame, getLabelPanel(), "Hello World!",
                                            JOptionPane.INFORMATION_MESSAGE);
    

    You can get the JPanel from a method, like :

    private JPanel getLabelPanel() {
        JPanel panel = new JPanel();
        panel.setOpaque(true);
        panel.setBackground(Color.BLUE);
        JLabel helloLabel = new JLabel("Hello World!", JLabel.CENTER);
        helloLabel.setForeground(Color.WHITE);
        panel.add(helloLabel);
    
        return panel;
    }
    

    OUTPUT :

    PANEIMAGE


    UPDATE 1 :

    Else you can try this to change everything,

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

    UPDATED OUTPUT :

    OPTIONPANEIMAGE