Nimbus i alternatywne kolory wierszy

Nie rozumiem, jak działa alternatywna kolorystyka wierszy w Nimbusie. To wydaje się po prostu szalone !!! Chciałbym wyjaśnić to tutaj.

Na demonstrację, powiedzmy tochcemy JTable, która zastępuje czerwone i różowe wiersze (i nie obchodzi mnie, który kolor jest pierwszy).

Bez ponownego definiowania własnych komórek które wykonują swoją własną rzecz „modulo 2”, i nie pomijając żadnej metody z JTable, chcę wymienić obowiązkowe kroki między uruchomieniem aplikacji a otrzymaniem JTable z niestandardowymi alternatywnymi kolorami wierszytylko przy użyciu właściwości Nimbus.

Oto kroki, których oczekiwałem:

Zainstaluj Nimbus PLAFDostosuj właściwość nimbus „Table.background”Dostosuj właściwość nimbus „Table.alternateRowColor”Utwórz JTable z prostymi danymi / nagłówkamiZawiń jTable w JScrollPane i dodaj go do JFramePokaż JFrame

Oto kod źródłowy:

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

To jest kod JDK6. Czy ktoś może mi powiedzieć, że idzie źle?

Jak komentuje per @ kleopatra i wkład całej społeczności w to / sposób, aby uzyskać alternatywne kolorowanie wierszy za pomocą tylko właściwości Nimbus

klasa publiczna JTableAlternateRowColors implementuje 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);
}

}

questionAnswers(2)

yourAnswerToTheQuestion