2013-04-06 21 views
10

Ho cercato una soluzione per poter aumentare l'altezza di una riga in una tabella J. Ho usato il metodo setRowHeight (int int) che compila ed esegue OK, ma nessuna riga [s] è stata aumentata. Quando uso il metodo getRowHeight (int) della riga su cui ho impostato l'altezza, viene stampata la dimensione a cui ho aumentato la riga, quindi non sono sicuro di cosa sia sbagliato. Il codice seguente è un'illustrazione approssimativa di come sto cercando di risolverlo.Impostazione dell'altezza di una riga in una JTable in java

La mia classe estende JFrame.

String[] columnNames = {"Column 1", "Column 2", "Column 1 3"}; 

JTable table = new JTable(new DefaultTableModel(columnNames, people.size())); 

DefaultTableModel model = (DefaultTableModel) table.getModel(); 

int count =1; 
for(Person p: people) 
{ 
    model.insertRow(count,(new Object[]{count, p.getName(), p.getAge()+"", 
    p.getNationality})); 
    count++; 
} 

table.setRowHeight(1, 15);//Try set height to 15 (I've tried higher) 

Qualcuno può dirmi dove sto andando male? Sto cercando di aumentare l'altezza della riga da 1 a 15 pixel?

+2

'ho ri organizzato il mio codice come questo esempio, e ho anche aumentato l'altezza a 100, ed ancora increase' visibile. Questo è il motivo per cui dovresti pubblicare il tuo [SSCCE] (http://sscce.org/) che dimostra il problema. Solo perché dici che stai facendo qualcosa non significa che lo stai facendo davvero. Forse hai definito due tabelle per errore e stai modificando la proprietà di una tabella che non è effettivamente visualizzata. – camickr

+0

Scusa scusa, stavo usando il metodo setRowHeight (int int) nel ciclo, ma lo ho cambiato in setRowHeight (int) e ora funziona perfettamente. Grazie per le risposte, molto apprezzate –

risposta

13

Non so quale sia l'intenzione di lasciare la prima riga all'indice 0 vuota. Le righe in JTable vengono eseguite dall'indice 0. È preferibile pubblicare un esempio completo (ad esempio SSCCE) che mostri i problemi. Confrontare a questo semplice esempio che funziona OK:

enter image description here

import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class DemoTable { 
    private static void createAndShowGUI() { 
     JFrame frame = new JFrame("DemoTable"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     DefaultTableModel model = new DefaultTableModel(); 
     model.setColumnIdentifiers(new Object[] { 
       "Column 1", "Column 2", "Column 3" }); 

     JTable table = new JTable(model); 
     for (int count = 0; count < 3; count++){ 
      model.insertRow(count, new Object[] { count, "name", "age"}); 
     } 
     table.setRowHeight(1, 30); 

     frame.add(new JScrollPane(table)); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
+1

Grazie mille per la risposta. Come ho organizzato il codice come esempio, ora funziona.Molto apprezzato –

+0

@DouglasGrealis Prego, sono contento che ti abbia aiutato! :) – tenorsax

11

È possibile utilizzare:

o se si voleva impostare l'altezza di fila per una riga specifica, l'uso:

table.setRowHeight(int par1, int par2);

+0

Grazie per la risposta. Come puoi vedere nel mio codice, l'ho già invocato, ma non sembra fare nulla. –

+0

Prova a utilizzare model.setRowHeight()? dal momento che hai invocato il metodo getModel() dalla variabile di tabella – madcrazydrumma

+0

, ho provato a farlo e il compilatore restituisce: non riesci a trovare il simbolo setRowHeight nella posizione DefaultTableModel? Grazie ancora –

2

È possibile anche aggiungere un tableModelListener?

model.addTableModelListener(new TableModelListener() { 
    @Override public void tableChanged(final TableModelEvent e) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override public void run() { 
       table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height 
      } 
     }); 
    } 
}); 
+0

Grazie per la risposta. Sostituirò questi metodi al di fuori del Costruttore? Insieme a JTable –

+0

Ecco cosa ho fatto @DouglasGrealis. La mia classe JTable è diventata un TableModelListener e il mio modello di tabella l'ha aggiunta come TableModelListener. – user1283704

Problemi correlati