JScrollpane没有注意到另一个JScrollpane

时间:2016-01-06 10:49:02

标签: java swing jscrollpane

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

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时,我向tabbedPane添加了一个新的JPanel。 JPanel包含来自.csv

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

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

编辑:导入.csv之前和之后的图片可能有助于您理解。

before

after

1 个答案:

答案 0 :(得分:0)

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

然后您可以使用:

splitPane.setResizeWeight(1.0);

现在,在调整帧大小时,所有额外空间都将转到第二个组件。因此,该组件的滚动条将根据需要显示/消失。