automatische Zeilenhöhen Anpassung bei JTable

Sinus

Aktives Mitglied
Hallo,

beim googlen habe ich eine Methode gefunden, mit der man die Zeilenhöhe einer JTabelle automatisch anpassen kann. Die Methode heißt updateRowHeights. Leider funktioniert es aber irgendwie noch nicht.

Hier mein Code:

Java:
import javax.swing.*;
import java.awt.*;

public class ExampleTable {
	JTable textTable;

	public JPanel createTable() {        		
		JPanel totalGUI = new JPanel();
					
		//define titles for table
        String[] title = {"TITLE1", "TITLE2", "TITLE3"};

        //table data
        Object[][] playerdata = {       
        {new Integer(34), "Steve", "test test test"},
        {new Integer(32), "Patrick", "du hu hu hu hu hu hu hu uh u kkkkkk oooo pppp"},
        {new Integer(10), "Sarah", "xxxxxxxxxxxxx aaaaaaaaaa bbbbbbbbbbbbb dddddddddddd xxxxxxx gggewr  eeeeeeeeee ddd g fffffff zzzzzzz"},};
        
        //create object 'textTable'
        textTable = new JTable(playerdata,title);
               
        //adjust dynamically the Row height of each cell
        updateRowHeights();
        
        //put line breaks if string is longer than cell-width
        RowHeightCellRenderer dynRow = new RowHeightCellRenderer();
        textTable.getColumnModel().getColumn(2).setCellRenderer(dynRow);
        System.out.println(textTable.getPreferredSize().height);
                
        //scrollbar
        JScrollPane scrollPane = new JScrollPane(textTable);
        
        totalGUI.add(scrollPane);				
		return totalGUI;
	}

	private void updateRowHeights() {
    
        for (int row = 0; row < textTable.getRowCount(); row++) {
            int rowHeight = textTable.getRowHeight();
            for (int column = 0; column < textTable.getColumnCount(); column++)
            {
                Component comp = textTable.prepareRenderer(textTable.getCellRenderer(row, column), row, column);
                rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
            }
            textTable.setRowHeight(row, rowHeight);
        }
	}
	
	private static void createAndShowGUI() {

		//create main frame
		JFrame mainFrame = new JFrame("");
		ExampleTable test = new ExampleTable();
		JPanel totalGUI = new JPanel();
		totalGUI = test.createTable();
													      
		//visible mode
		mainFrame.add(totalGUI); //integrate main panel to main frame
		mainFrame.pack();
		mainFrame.setVisible(true);		
	}
	
	
	public static void main (String[] args)	{				
        
		createAndShowGUI();		
		
	}//main
}

Könnte ich da noch irgendwas vergessen haben?

Vielen Dank und beste Grüße
Sinus
 

Sinus

Aktives Mitglied
Moin VFL_Freak,

ok, d.h. dass die Zeilenhöhen der entsptrechenden Zellen in der JTable trotz Aufruf der Methode
updateRowHeight nicht angepasst werden. Ich weiß aber auch warum:

1. updateRowHeight muss nach dem renderer stehen
Java:
//put line breaks if string is longer than cell-width
RowHeightCellRenderer dynRow = new RowHeightCellRenderer();
textTable.getColumnModel().getColumn(2).setCellRenderer(dynRow);
System.out.println(textTable.getPreferredSize().height);
        
//adjust dynamically the Row height of each cell
updateRowHeights();

2. die bevorzugte Größe comp.getpreferredSize.height
Java:
rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
ist immer 18, obwohle sie ja doch größer sein müsste. Aber warum??

Irgendwelche Ideen?


beste Grüße
SinuS
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H automatische Anzahl der Spalten ermitteln -> geht nicht AWT, Swing, JavaFX & SWT 6
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
I JAVAFX - CSS - automatische Property- und Methoden-Vorlagen in Eclipse AWT, Swing, JavaFX & SWT 17
Neumi5694 Swing Gridbaglayout - automatische Anpassung verhindern AWT, Swing, JavaFX & SWT 1
F Textfeld Währungszahlen und automatische Aktualisierung AWT, Swing, JavaFX & SWT 14
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
J ungewollt-automatische Größenänderung von JLabel AWT, Swing, JavaFX & SWT 5
A Automatische anpassung im NullLayout AWT, Swing, JavaFX & SWT 10
N JEditorPane und automatische Scrollposition AWT, Swing, JavaFX & SWT 2
B Automatische Größenanpassung AWT, Swing, JavaFX & SWT 7
K Automatische Skalierung von GUI Elementen (Java Swing) AWT, Swing, JavaFX & SWT 2
N automatische Auswahl einer JComboBox AWT, Swing, JavaFX & SWT 6
C Automatische Screenshots + Analyse des Bildes AWT, Swing, JavaFX & SWT 5
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
aze GridLayout: Keine automatische Ausdehnung AWT, Swing, JavaFX & SWT 2
A AWT Automatische Weiterleitung? AWT, Swing, JavaFX & SWT 13
M Automatische Anpassung eines JPanels in einem JFrame AWT, Swing, JavaFX & SWT 6
L JTable automatische Spaltenbreite AWT, Swing, JavaFX & SWT 2
G JPanel automatische Größ AWT, Swing, JavaFX & SWT 4
C JSplitPane automatische Veränderung verbieten. AWT, Swing, JavaFX & SWT 3
T Automatische Grössenanpassung JPanel / JScrollpane AWT, Swing, JavaFX & SWT 3
G GridBagLayout - automatische Größenanpassung AWT, Swing, JavaFX & SWT 3
L jTextField mit automatische Suchfunktion? AWT, Swing, JavaFX & SWT 2
A Automatische Scrollbalken bei einem JFrame AWT, Swing, JavaFX & SWT 8
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
J Java - dynamische Anpassung an Fenstergröße? AWT, Swing, JavaFX & SWT 4
K JTable +TableModel --> Anpassung der Tabellengröße (Zeilenanzahl) AWT, Swing, JavaFX & SWT 3
C Anpassung von JLabel Größe AWT, Swing, JavaFX & SWT 4
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
G Größe JLabel anpassung an Textlänge AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben