Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Alternativa a JTable

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    non mi sono spiegata..
    l'oggetto

    codice:
    DefaultTableModel model =newDefaultTableModel();
    mi consente di aggiungere colonne passando come parametro l'header che voglio attribuire:

    es. addColumn("ciao")
    in un ciclo for (da 0 a n-1) aggiungo n-1 colonne
    e imposta le dimensioni in automatico, cosa per me assai utile..

    ora.. avendo tale oggetto, come posso lavorare sul colore della prima colonna?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    ora.. avendo tale oggetto, come posso lavorare sul colore della prima colonna?
    Il colore (l'aspetto in generale) delle celle/header non centra nulla con il "model". Centrano principalmente solo i "renderer" delle celle/header.

    Io prima ti ho postato 2 righe di codice. Le hai provate? O ti sono sembrate strane/inutili? O non le hai capite? Te le spiego ... non è un problema:

    codice:
    TableCellRenderer rendererColonne = tabella.getTableHeader().getDefaultRenderer();
    
    tabella.getColumnModel().getColumn(0).setCellRenderer(rendererColonne);

    La prima riga prende dal JTable e dal suo JTableHeader il renderer predefinito usato per la riga di intestazione delle colonne. L'header generalmente ha un aspetto diverso dalle celle, ha lo sfondo grigio e il testo generalmente è centrato orizzontalmente. Potrebbe (in linea di massima) andarti bene anche come intestazione delle righe.
    La seconda riga assegna questo renderer anche per tutte le celle nella colonna 0, ovvero la prima.

    Può darsi che non ti piaccia o non ti vada bene .... ma è una prova che puoi fare. Se non ti va bene, si possono vedere altre soluzioni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il colore (l'aspetto in generale) delle celle/header non centra nulla con il "model". Centrano principalmente solo i "renderer" delle celle/header.

    Io prima ti ho postato 2 righe di codice. Le hai provate? O ti sono sembrate strane/inutili? O non le hai capite? Te le spiego ... non è un problema:

    codice:
    TableCellRenderer rendererColonne = tabella.getTableHeader().getDefaultRenderer();
    
    tabella.getColumnModel().getColumn(0).setCellRenderer(rendererColonne);

    La prima riga prende dal JTable e dal suo JTableHeader il renderer predefinito usato per la riga di intestazione delle colonne. L'header generalmente ha un aspetto diverso dalle celle, ha lo sfondo grigio e il testo generalmente è centrato orizzontalmente. Potrebbe (in linea di massima) andarti bene anche come intestazione delle righe.
    La seconda riga assegna questo renderer anche per tutte le celle nella colonna 0, ovvero la prima.

    Può darsi che non ti piaccia o non ti vada bene .... ma è una prova che puoi fare. Se non ti va bene, si possono vedere altre soluzioni.
    a mente lucida ho riprovato il tuo codice.. vanno benissimo..!!!

    sapresti dirmi se esiste un metodo predefinito o anche creato da altri utenti, per dare dimensione alle colonne in base al contenuto??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    a mente lucida ho riprovato il tuo codice.. vanno benissimo..!!!
    Bene, son contento.

    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    sapresti dirmi se esiste un metodo predefinito o anche creato da altri utenti, per dare dimensione alle colonne in base al contenuto??
    JTable non offre nulla per adattare la larghezza di una colonna al suo contenuto. Se cerchi in rete (ad esempio vedi questa discussione su stackoverflow), l'approccio tipico utilizzato è quello di invocare esplicitamente il renderer passando man mano i valori di ciascuna cella, ottenendo quindi il Component dal renderer e prendendo il suo preferred-width, determinando poi il massimo tra tutte le larghezze.
    Lo so ... sembra/è un po' noioso ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Bene, son contento.


    JTable non offre nulla per adattare la larghezza di una colonna al suo contenuto. Se cerchi in rete (ad esempio vedi questa discussione su stackoverflow), l'approccio tipico utilizzato è quello di invocare esplicitamente il renderer passando man mano i valori di ciascuna cella, ottenendo quindi il Component dal renderer e prendendo il suo preferred-width, determinando poi il massimo tra tutte le larghezze.
    Lo so ... sembra/è un po' noioso ....
    codice:
    for (int i = 0; i < model.getColumnCount(); i++) {
                    TabellaMatrice.getColumnModel().getColumn(i).setWidth(10);
            }
    questo codice credi sia errato? cioè sicuramente si xkè non modifica nulla..
    Ultima modifica di LuLyLuNa; 17-06-2014 a 13:22

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.