JScrollpane 没有注意到另一个 JScrollpane

JScrollpane does not notice another JScrollpane

我有一个 JFrame,它在 JScrollPane 中包含一个 JSplitPane(因此如果 window 太大,用户可以滚动)。 JSplitPane 包含一个 JTabbedPane 作为顶部组件和图形作为底部组件。 现在我想读取 .csv 并在我的 JTabbedPane 中显示它。我可以使用第二个 JScrollPane 滚动列表。问题来了,当我在我的程序中导入 .csv 时,第一个 JScrollPane 似乎没有注意到有第二个 JScrollPane 用于滚动列表,然后我的 window 获得了很多免费 space滚动。

JFrame frame = new JFrame();
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.setTopComponent(tabbedPane);
splitPane.setBottomComponent(graphics());
JScrollPane scrollPane = new JScrollPane(splitPane);
frame.add(scrollPane);
frame.setVisible(true);

当我导入 .csv 时,我将一个新的 JPanel 添加到 tabbedPane。 JPanel 包含来自 .csv

的数据的列表
JPanel panel = new JPanel();
JScrollPane scrollPane = new JScrollPane(panel);
// here comes the code for the list
tabbedPane.add(scrollPane);

希望你能理解我的问题,很难解释。

编辑:导入.csv前后的图片可以帮助您理解。

删除第一个滚动窗格。将拆分窗格直接添加到框架使用的 BorderLayout 的 CENTER。随着框架调整大小,所有 space 都将分配给拆分窗格。

然后您可以使用:

splitPane.setResizeWeight(1.0);

现在所有额外的 space 都将在调整框架大小时转到第二个组件。因此,该组件的滚动条将根据需要 appear/disappear。