Нимб и цвета альтернативных рядов
Я неЯ не понимаю, как в 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);
}