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:
Könnte ich da noch irgendwas vergessen haben?
Vielen Dank und beste Grüße
Sinus
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