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