Java 如何使JScrollPane与嵌套的JTables一起正常工作?

Java 如何使JScrollPane与嵌套的JTables一起正常工作?,java,swing,jtable,jpanel,jscrollpane,Java,Swing,Jtable,Jpanel,Jscrollpane,我的问题是,当更多的行添加到JTable(jtbls)时,垂直滚动条不会出现在我的JScrollPane(外部)上 JPanel面板=新的JPanel(); panel.setLayout(新网格布局(1,4)); JScrollPane outer=新的JScrollPane(面板); jtbls=新的JTable[4]; for(int i=0;i

我的问题是,当更多的行添加到JTable(jtbls)时,垂直滚动条不会出现在我的JScrollPane(外部)上

JPanel面板=新的JPanel();
panel.setLayout(新网格布局(1,4));
JScrollPane outer=新的JScrollPane(面板);
jtbls=新的JTable[4];
for(int i=0;i

这是因为您设置了

inner.setPreferredSize(new Dimension(outer.getWidth() / 4, 70));
因此,
inner
JPanel
高度高于
70
时“很好”,并且不会向父面板请求更多空间-
JPanel面板
,因为父面板不会向其父面板请求更多空间-
JVieport


另外,如果您查看
JTable
-方法
setFillsViewportHeight
的源代码,它只适用于
javax.swing.JLayer
javax.swing.ScrollPaneLayout
javax.swing.ViewportLayout
(查看
getScrollableTracksViewportHeight()
的调用)-因此,仅当JTable位于某个视口内时,此选项才有效。

您可以将除一个滚动条外的所有滚动条设置为
垂直滚动条\u从不
,并将一个滚动条设置为
垂直滚动条\u始终
。然后像@camickr向我展示的那样将滚动条模型绑在一起

inner.setPreferredSize(new Dimension(outer.getWidth() / 4, 70));