JTable

di il
4 risposte

JTable

Ciao,
Io volevo fare una domanda inerente alle tabelle in java se ad esempio io ricevo un oggetto e dopo averlo inserito con un ciclo for all'interno di una jtable.. è possibe modificare l'altezza di una colonna in modo che si adatti alla dimensione di una stringa?
Mi viene passato un ArrayList di "Event", da cui prendo data, tipo, gravità,.. e il testo. Il testo sarebbe la descrizione dell'evento, solo che quando lo stampo nella tabella, nella grafica si vedono le prime 2 parole e tutto il resto no, perchè appunto la cella è troppo piccola.

Questo è il codice per la creazione della tabella:
String columnNames[] = {"TYPE", "GRAVITY", "SOURCE", "DESCRIPTION", "PERCENTAGE", "CAP", "DATE"};
		DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
		table = new JTable(tableModel);
		table.setDefaultEditor(Object.class, null);
		scrollPane.setViewportView(table);
Questo è il ciclo che inserisce le caratteristiche di Event nella tabella:


for(int i = 0; i < chosenPredictions.size(); i++) {
	String tp = chosenPredictions.get(i).get_type();
	String grvt = chosenPredictions.get(i).get_grade();
	String src = chosenPredictions.get(i).get_source();
	String dscrptn = chosenPredictions.get(i).get_text();
	String prcntg = chosenPredictions.get(i).get_percentage() + "%";
	String postalc = chosenPredictions.get(i).get_cap();
	String ford = chosenPredictions.get(i).get_day() + "/" + chosenPredictions.get(i).get_month() + "/" + chosenPredictions.get(i).get_year();
	
	Object[] data = {tp, grvt, src, dscrptn, prcntg, postalc, ford};
	tableModel.addRow(data);
	}

4 Risposte

  • Re: JTable

    DadaLilli ha scritto:


    è possibe modificare l'altezza di una colonna in modo che si adatti alla dimensione di una stringa?
    In JTable purtroppo (e sfortunatamente) l'altezza delle righe NON si può adattare automaticamente in base al contenuto delle celle. Cioè non è una cosa gestita "di serie".

    JTable invece ha i metodi:

    public void setRowHeight(int rowHeight)
    public void setRowHeight(int row, int rowHeight)

    Il primo vale per tutte le righe, il secondo per una riga specifica.

    Se vuoi che la riga si adatti in automatico come altezza in base al contenuto ... molto probabilmente è fattibile ma richiede un po' di studio/lavoro.
  • Re: JTable

    andbin ha scritto:


    Se vuoi che la riga si adatti in automatico come altezza in base al contenuto ... molto probabilmente è fattibile ma richiede un po' di studio/lavoro.
    Nel senso che potrei creare una funzione che in base al numero di caratteri della stringa la riga si adatta in altezza?
  • Re: JTable

    DadaLilli ha scritto:


    Nel senso che potrei creare una funzione che in base al numero di caratteri della stringa la riga si adatta in altezza?
    La questione è un po' più complicata e centrano pure i table cell renderer. I renderer predefiniti generalmente forniscono come componente da "stampare" nella cella un banale JLabel. Ora: in JLabel il testo normalmente NON va mai "a capo". A meno ... di sfruttare il rendering HTML supportato dai componenti Swing.

    Quindi: vuoi avere all'interno di una cella del testo multi-riga? Allora se non è possibile sfruttare il rendering HTML, si deve innanzitutto creare un renderer apposito.
  • Re: JTable

    andbin ha scritto:


    La questione è un po' più complicata e centrano pure i table cell renderer. I renderer predefiniti generalmente forniscono come componente da "stampare" nella cella un banale JLabel. Ora: in JLabel il testo normalmente NON va mai "a capo". A meno ... di sfruttare il rendering HTML supportato dai componenti Swing.

    Quindi: vuoi avere all'interno di una cella del testo multi-riga? Allora se non è possibile sfruttare il rendering HTML, si deve innanzitutto creare un renderer apposito.
    Ok, grazie mille!
Devi accedere o registrarti per scrivere nel forum
4 risposte