Нимб и цвета альтернативных рядов

Я неЯ не понимаю, как в Nimbus работает альтернативная раскраска строк. Кажется просто сумасшедшим !!! Я хотел бы прояснить ситуацию здесь.

Для демонстрации, давайтескажи чтомы хотим JTable, который чередует красный и розовый ряды (и я невсе равно какой цвет будет первым).

Без переопределения пользовательских cellRenderers которые выполняют свои собственныепо модулю 2 " вещь, и без переопределения любого метода из JTable, я хочу перечислить обязательные шаги между запуском 's приложение и получение JTable с пользовательскими цветами альтернативных строкиспользуя только свойства Nimbus.

Вот шаги, которые я ожидал выполнить:

Установите Нимб PLAFНастройте "Table.background» имущество нимбаНастройте "Table.alternateRowColor» имущество нимбаСоздайте JTable с простыми данными / заголовкомОберните jTable в JScrollPane и добавьте его в JFrameПоказать JFrame

Вот исходный код:

public class JTableAlternateRowColors implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new JTableAlternateRowColors());
    }

    @Override
    public void run() {
        try {
            UIManager.setLookAndFeel(new NimbusLookAndFeel());
        } catch (UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }

        UIManager.getDefaults().put("Table.background", Color.RED);
        UIManager.getDefaults().put("Table.alternateRowColor", Color.PINK);

        final JFrame jFrame = new JFrame("Nimbus alternate row coloring");
        jFrame.getContentPane().add(new JScrollPane(new JTable(new String[][] {
                {"one","two","three"},
                {"one","two","three"},
                {"one","two","three"}
        }, new String[]{"col1", "col2", "col3"}
        )));
        jFrame.setSize(400, 300);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }
}

Это код JDK6. Может кто-нибудь сказать мне, что здесь идет не так?

Согласно @kleopatra 's комментарий и вклад всего сообщества здесьs a / способ получить альтернативную раскраску строк, используя только свойства Nimbus

открытый класс JTableAlternateRowColors реализует Runnable {}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new JTableAlternateRowColors());
}

@Override
public void run() {
    try {
        UIManager.setLookAndFeel(new NimbusLookAndFeel());
    } catch (UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }

    UIManager.put("Table.background", new ColorUIResource(Color.RED));
    UIManager.put("Table.alternateRowColor", Color.PINK);
    UIManager.getLookAndFeelDefaults().put("Table:\"Table.cellRenderer\".background", new ColorUIResource(Color.RED));

    final JFrame jFrame = new JFrame("Nimbus alternate row coloring");
    final JTable jTable = new JTable(new String[][]{
            {"one", "two", "three"},
            {"one", "two", "three"},
            {"one", "two", "three"}
    }, new String[]{"col1", "col2", "col3"});
    jTable.setFillsViewportHeight(true);
    jFrame.getContentPane().add(new JScrollPane(jTable));
    jFrame.setSize(400, 300);
    jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    jFrame.setVisible(true);
}

Ответы на вопрос(2)

Ваш ответ на вопрос