JOptionPane с другим фоном

Я пытаюсь изменить цвет фона моего JOptionPane через константы UIManager, фоны текстовой области и области кнопок не затрагиваются.

Я разместил свой код:3

Образ

Как я могу изменить их фон тоже?

public LoginFINAL() {
    this.setImagen("/imagenes/FondoLogin.png");
    UIManager.put("OptionPane.background",Color.RED );  
    UIManager.put("Panel.background",Color.RED);  
    UIManager.put("Button.background",Color.RED); 
    initComponents();
    jLabel3.setVisible(false);
    setLocationRelativeTo(null);
    textUsers.requestFocus();


}

И вот как я называю JoptionPane

else{
          JOptionPane.showMessageDialog(rootPane, "pls");

    }

Теперь лучше?

1 ответ

У меня была такая же проблема, вот мое решение:

Изображение 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 pane а также JDialog jd ранее были созданы. Надеюсь, что это поможет любому, кто имел эту проблему.

Другие вопросы по тегам