Почему TabbedPane теряет свой цвет фона при применении setLookAndFeel?

Не могу понять, почему при применении setLookAndFeel для java-приложения вкладка tabbedPane теряет фоновый набор, который я установил ранее.

Перед применением setLookAndFeel:

После применения setLookAndFeel:

Это мой код:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextPane;
import javax.swing.UIManager;

public class CoocHelpPanel {


    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    CoocHelpPanel window = new CoocHelpPanel();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public CoocHelpPanel() {
        initialize();
        frame.setVisible(true);
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {

        frame = new JFrame();
        frame.setTitle("TEST TAB COLOR");
        frame.setResizable(false);
        frame.getContentPane().setBackground(Color.WHITE);
        frame.setBounds(100, 100, 200, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
        tabbedPane.setBounds(10, 10, 965, 855);
        frame.getContentPane().add(tabbedPane);

        JPanel panel = new JPanel();
        tabbedPane.addTab("TAB 1 - AAAA", null, panel, null);
        tabbedPane.setBackgroundAt(0, Color.red);
        panel.setLayout(null);


        JPanel panel_1 = new JPanel();
        tabbedPane.addTab("TAB 2 - BBBB", null, panel_1, null);
        tabbedPane.setBackgroundAt(1, Color.red);
        panel_1.setLayout(null);

    }
}

1 ответ

Если вы посмотрите на javadoc setBackgroundAt, вы увидите:
Это зависит от внешнего вида, чтобы почитать это свойство, некоторые могут проигнорировать его.
WindowsLookAndFeel не соблюдает, по умолчанию (металл?) Делает. Вот почему.

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