Salve
ho una jTable realizzata con il l'editor grafico di netbeans (quindi il codice generato automaticamente da netbeans non si può modificare) vorrei colorare le righe a mio piacimento qualcuno mi sa dare una mano grazie
Salve
ho una jTable realizzata con il l'editor grafico di netbeans (quindi il codice generato automaticamente da netbeans non si può modificare) vorrei colorare le righe a mio piacimento qualcuno mi sa dare una mano grazie
Devi associare un renderer alla tua tabella.
Puoi personalizzarlo in modo che colori solo sotto opportune condizioni:
per usarlo:codice:public static class ColorRenderer extends DefaultTableCellRenderer{ @Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { JLabel label = new JLabel(""); label.setHorizontalAlignment(JLabel.CENTER); label.setFont(new Font("Tahoma", Font.BOLD, 14)); label.setText(value.toString()); label.setOpaque(true); label.setForeground(Color.black); label.setBackground(Color.red); return label; } }
codice:TableCellRenderer ColorRendererRed = new ColorRenderer(); for (int k=0; k<jTable1.getColumnCount(); k++){ TableColumnModel modelloColonna = jTable1.getColumnModel(); modelloColonna .getColumn(k).setCellRenderer(ColorRendererRed); }
Dipende quali righe e in base a quali condizioni (dipende dal valore contenuto in una cella? Dipende solo dall'indice della riga?).Originariamente inviato da Peppe1984
vorrei colorare le righe a mio piacimento qualcuno mi sa dare una mano grazie
Una soluzione è definire un apposito cell "renderer". Un'altra soluzione è estendere JTable e fare l'override di prepareRenderer(). Vedi tra i miei Java Examples (vedi firma).
DefaultTableCellRenderer è già un JLabel!! Perché istanziare un nuovo JLabel ogni volta?? Inoltre il componente dovrebbe non fare (per questioni di performance) certe operazioni e questo è ben scritto nella documentazione di DefaultTableCellRenderer.Originariamente inviato da som
codice:public static class ColorRenderer extends DefaultTableCellRenderer{ JLabel label = new JLabel("");
Si può anche associare il renderer ad un "tipo" (Class) piuttosto che ad una colonna specifica. Ma quale tipo dipende da cosa indica il table model.Originariamente inviato da som
codice:modelloColonna .getColumn(k).setCellRenderer(ColorRendererRed);
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
precisissimo come sempre![]()