JScrollPane和大小调整问题

时间:2013-04-11 19:03:29

标签: java swing layout user-interface jpanel

我在处理'打包'JPanel并允许滚动条的正确方法方面遇到了很大问题。

我遗漏了一些代码,但我相信所提供的内容应该足够了。

问题是,JScrollBar要么不显示,要么无法与之交互(如果我将滚动条设置为始终具有垂直条)。

以下是描述此内容的图片:

![没有滚动条存在] [1]

ProjectPanel(扩展JPanel)具有固定大小,如您所见,它比可见视图端口延伸得更远。没有办法获得JPanel(ProjectSelector)的计算高度,因为ProjectPanels也可以这样转换:

![他们需要填写网格] [2]

如果有人可以提供一些有关如何做到这一点的见解,那就太棒了。截至目前,我不惜一切代价不使用外部API,因为这会带来更多弊大于利。

问题:

如何将首选大小的高度设置为“灵活”,以便添加组件时可以扩展?如果这不理想/不可能,我怎样才能正确地允许JScrollPane有效地显示JPanel的所有组件?

2 个答案:

答案 0 :(得分:2)

  

如果我不这样做,那么Flow Layout会水平组织它们

也许你应该使用GridLayout。

如果没有,那么您可以尝试Wrap Layout,这是一个根据需要包装到新行的FlowLayout。

答案 1 :(得分:0)

如果您正在寻找不同的布局,为什么不尝试MiGLayout?它是一个非常强大而灵活的布局管理器。

查看详细示例here

从该链接重写initUI方法,以查看对您的问题感兴趣的行为:

public void initUI() {
    this.setPreferredSize(new Dimension(100, 100));
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setJMenuBar(initMenuBar());
    this.getContentPane().add(new JScrollPane(mainPanel = initMainPanel()));
    this.setLocationByPlatform(true);
    this.pack();        
}