Visualizzazione dei risultati da 1 a 3 su 3

Discussione: JTable, righe sbarrate

  1. #1

    JTable, righe sbarrate

    Vorrei fare in modo che se una delle colonne e' settata a un certo valore, tutta la corrispondente riga venga sbarrata. Si puo' fare?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JTable, righe sbarrate

    Originariamente inviato da mxa
    Vorrei fare in modo che se una delle colonne e' settata a un certo valore, tutta la corrispondente riga venga sbarrata. Si puo' fare?
    Innanzitutto precisa bene cosa intendi per "sbarrata".
    Che una cella sia riempita con tante linee oblique ///// ? O che ci sia una sola linea che va da un angolo a quello opposto della cella?

    Comunque, a parte ciò che si deve vedere graficamente, la questione è la solita: JTable si basa sui "renderer" per visualizzare le celle. Il fatto però è che nel tuo caso il valore in una colonna va ad impattare su tutte le celle in quella riga.

    Pertanto la vedrei un po' complicata/brutta pensare di fare dei renderer appositi. Si potrebbe invece estendere JTable e fare l'override di prepareRenderer(). Se quella certa colonna nella riga richiesta ha un certo valore, si fa ritornare non il Component fornito dal renderer "ufficiale" passato a questo prepareRenderer() ma si restituisce un componente ad-hoc che magari semplicemente disegna le sbarre.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Indendo una linea orizzontale che va da sinistra a destra di tutta la riga.
    Per adesso avevo fatto un renderer che mi colora tutta la riga di rosso:

    codice:
    private class MyTableCellRenderer extends DefaultTableCellRenderer
        {
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
            {
                Component c = super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
                Object ignored = _tmodel.getValueAt (row, REF_IGNORED_COLUMN);
                if (ignored != null && ((String) ignored).equals ("YES")) {
                    c.setBackground (Color.RED);
                }
                else {
                    if (!isSelected) {
                        c.setBackground(Color.WHITE);
                    }
                }
                return c;
            }
        }
    ma mi chiedevo se fosse facilmente modificabile per ottenere l'effetto che volevo.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.