per Layout
wenn du die JTable in bestimmten Layouts eingefügt hast, z.B. das Standard-BorderLayout, dann wird es den ganzen Platz einnehmen,
bei anderen Einstellungen evtl. nicht,
ohne Code läßt sich daher übrigens nicht sagen, was bei dir falsch ist
setLayout(new BorderLayout());
add(_table,BorderLayout.CENTER);
private class ResizeTableListener extends ComponentAdapter
{
@Override
public void componentResized(ComponentEvent e)
{
int height = _table.getHeight();
_table.setRowHeight(height + 1);
_table.repaint();
super.componentResized(e);
}
}
ich nicht,
in einem vollständigen Testprogramm wäre es zumindest denkbar, es herauszufinden
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JTable;
public class Table
{
public static void main(String[] args)
{
String[][] rowData = {
{ "Japan", "245" }, { "USA", "240" }, { "Italien", "220" },
{ "Spanien", "217" }, {"Türkei", "215"} ,{ "England", "214" },
{ "Frankreich", "190" }, {"Griechenland", "185" },
{ "Deutschland", "180" }, {"Portugal", "170" }
};
String[] columnNames = {
"Land", "Durchschnittliche Sehdauer pro Tag in Minuten"
};
JFrame frame = new JFrame();
frame.setSize(200,200);
final JTable table = new JTable(rowData,columnNames);
table.addComponentListener(new ComponentAdapter()
{
@Override
public void componentResized(ComponentEvent e)
{
int height = table.getHeight();
table.setRowHeight(height + 1);
table.repaint();
super.componentResized(e);
}
});
frame.add(table);
frame.setVisible(true);
}
}
Bessertable.setRowHeight(table.getSize().height/ table.getModel().getRowCount());
table.setRowHeight(table.getSize().height/ table.getRowCount());
final Insets insets = table.getInsets();
final int rowCount = table.getRowCount();
if (rowCount == 0) {
table.setRowHeight(25);
} else {
final int tableHeight = table.getHeight() - insets.top - insets.bottom - table.getIntercellSpacing().height;
table.setRowHeight(tableHeight / rowCount);