1

关于处理“打包”JPanel 并允许滚动条的正确方法,我遇到了很大的问题。

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

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

这是描述此情况的图像:

![不存在滚动条][1]

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

![他们需要填充为网格][2]

如果有人可以帮助提供有关如何执行此操作的一些见解,那就太好了。到目前为止,我不惜一切代价不使用外部 API,因为这弊大于利。

问题:

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

4

2 回答 2

2

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

也许您应该使用 GridLayout。

如果没有,那么您可以尝试Wrap Layout,它是一个 FlowLayout,可以根据需要换行。

于 2013-04-11T19:11:16.147 回答
0

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

请参阅此处的详细示例。

从该链接,重写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();        
}
于 2013-04-11T19:25:13.873 回答