Nimbos y colores alternos de hilera.

No entiendo cómo funciona la coloración de filas alternas en Nimbus. ¡Parece una locura! Me gustaría aclarar las cosas aquí.

Para la demostración, digamos queQueremos un JTable que alterne filas rojas y rosas. (y no me importa de qué color sea el primero).

Sin redefinir CellRenderers personalizados. que realizan su propio "módulo 2", y sin anular ningún método de JTable, quiero enumerar los pasos obligatorios entre iniciar la aplicación y obtener una JTable con colores de fila alternativos personalizadosusando propiedades Nimbus solamente.

Estos son los pasos que esperaba seguir:

Instale el Nimbus PLAFPersonaliza la propiedad nimbus "Table.background"Personaliza la propiedad nimbus "Table.alternateRowColor"Crear un JTable con datos simples / encabezadoEnvuelva el jTable en un JScrollPane y agréguelo al JFrameMostrar el JFrame

Aquí el código fuente:

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

Este es el código JDK6. ¿Alguien puede decirme que va mal aquí?

Según el comentario de @Kleopatra y la contribución de toda la comunidad, aquí hay una / la manera de obtener colores alternativos de fila utilizando solo las propiedades Nimbus.

La clase pública JTableAlternateRowColors implementa 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);
}

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta