Hey zusammen,
habe das Problem, dass meine JRTable in einer ScrollPane einem GridbagLayout nicht mit "an Inhalt angepasster Höhe" gezeichnet wird.
Wie kann dies erreicht werden?
Hier code sniplet für Instanzierung Table
Hier die JRTable
und hier ein Bild wie es aussieht!
Ich möchte, dass die Tabelle exakt mit der letzten Zeile aufhört. Bitte um eure Hilfe...
gruß,
digger
habe das Problem, dass meine JRTable in einer ScrollPane einem GridbagLayout nicht mit "an Inhalt angepasster Höhe" gezeichnet wird.
Wie kann dies erreicht werden?
Hier code sniplet für Instanzierung Table
Java:
params = new JRTable( data);
//params = new JTable(this,this);
paramsPane = new JScrollPane( params );
//System.out.println("Pane height: " + paramsPane.getHeight() + " width: "+ paramsPane.getWidth());
params.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
//System.out.println("Table height: " + params.getHeight() + " width: "+ params.getWidth());
//params.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Hier die JRTable
Java:
public class JRTable extends JTable
{
public JRTable()
{
}
public JRTable(TableModel TabMod)
{
super(TabMod);
for(int i = 0; i < 1; i++)
{
TableColumn tc = getColumn(getColumnName(i));
setPreferredColumnWidth(tc);
}
}
public void setPreferredColumnWidth(TableColumn tc)
{
int hw = getColumnHeaderWidth(tc);
int cw = getWidestCellInColumn(tc);
int w = hw > cw ? hw : cw;
tc.setMinWidth(w); // hier was eigenes waehlen zB 10
tc.setMaxWidth(200);// hier was eigenes waehlen zB w + 20
tc.setPreferredWidth(w);
//tc.sizeWidthToFit();
//sizeColumnsToFit(0); // bei version 1.4 nicht mehr
}
private int getColumnHeaderWidth(TableColumn tc)
{
int width = 0;
TableCellRenderer tcr = tc.getHeaderRenderer();
if(tcr == null)
{
JTableHeader jth = getTableHeader();
tcr = jth.getDefaultRenderer();
}
try
{
Component c = tcr.getTableCellRendererComponent(
this, tc.getHeaderValue(), false, false, 0, 0);
width = c.getPreferredSize().width;
}
catch (Exception e) {}
return (int)java.lang.Math.round(width * 1.2);
}
private int getWidestCellInColumn(TableColumn tc)
{
int index = tc.getModelIndex();
int width = 0;
int maxwidth = 0;
int l = getRowCount();
for(int i = 0; i < l; i++)
{
TableCellRenderer tcr = getCellRenderer(i, index);
try
{
Component c = tcr.getTableCellRendererComponent(this,
getValueAt(i, index), false, false, i, index);
width = c.getPreferredSize().width;
maxwidth = width > maxwidth ? width : maxwidth;
}
catch (Exception e) {}
}
return (int)java.lang.Math.round(maxwidth * 1.2);
}
}
und hier ein Bild wie es aussieht!
Ich möchte, dass die Tabelle exakt mit der letzten Zeile aufhört. Bitte um eure Hilfe...
gruß,
digger