基本方法是
- JTable是一个Scrollable,不幸的是,它在计算prefScrollable时效果不佳,因此您必须自己做
- 要么使用一个布局管理器来布局它们的首选项(fi FlowLayout),要么在JTable中实现max(如果您使用大小调整但尊重最大的管理器,如BoxLayout)
- JScrollPane是-validationRoot,因此重新验证必须在scrollPane的父项上进行
就像是:
final JTable table = new JTable(10, 5) { @Override public Dimension getPreferredScrollableViewportSize() { Dimension dim = super.getPreferredScrollableViewportSize(); // here we return the pref height dim.height = getPreferredSize().height; return dim; }};final JComponent content = new JPanel();content.add(new JScrollPane(table));Action add = new AbstractAction("add row") { @Override public void actionPerformed(ActionEvent e) { ((DefaultTableModel) table.getModel()).addRow(new Object[]{}); content.revalidate(); }};


