如何在JScrollPane中获取JScrollPanes以跟随父级的大小调整

时间:2012-02-26 22:34:05

标签: java swing jpanel jscrollpane

所以我有一堆JTable。每个JTable都位于JScrollPane内。然后我将这些JScrollPane中的每一个添加到JPanel。然后我将此JPanel添加到JScrollPane,然后添加到另一个JPanel BorderLayout。较大的JScrollPane使用其父级正确调整大小,但每个较小的JScrollPane具有恒定的高度,当窗口较小时,该高度大于窗口。我怎样才能让每个孩子JScrollPane用窗户/父母的身高调整大小?

我尝试使用JPanelFlowLayout添加更多中间BorderLayout,似乎没有任何效果。

以下是一些相关代码:

public class MyPanel extends JPanel
{
    public MyPanel()
    {
        super(new BorderLayout());
        JPanel panel = new JPanel();
        for (int i = 0; i < 5; i++)
        {
            // View extends JTable
            panel.add(new JScrollPane(new View(new Model())));
        }
        add(new JScrollPane(panel));
    }
}

我真的只是试图在一个带有水平滚动条的较大面板内,将一堆表格与滚动条水平相邻。我想要在窗口大小改变时适当调整所有内容。

更多代码:

final MyPanel panel = new MyPanel();
final JTabbedPane tabView = new JTabbedPane();
tabView.add(...);
tabView.add("foo", panel);

final JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, ..., tabView);
this.add(splitPane); // this extends JFrame

1 个答案:

答案 0 :(得分:2)

您可以使用BoxLayout。如果你想要相反:某些表被修复,你可以用约束Box.createRigidArea(new Dimension(100, 100))包装它。