2

我需要在 Swing 中选择一个标准容器(JPanel?),我可以将其用作占位符,我可以向其中添加另一个扩展 JPanel 的自定义组件:

JPanel containerPanel;
// built by a library from a text file, automatically part of a nice layout
MyPanel componentPanel; 
// something complicated that I can't integrate with the builder library

containerPanel = builder.getMyContainerPanel();
componentPanel = new MyPanel(...);
containerPanel.add(componentPanel);

有没有办法以某种方式耦合两个面板尺寸,以便调整大小正常工作?我不太确定在摇摆中调整大小是如何工作的,但我想要的是外部containerPanel是一个薄的包装器,它服从于我componentPanel的和外部面板尽可能多地委托给内部面板。

我不想以这种方式做事,但这似乎是将构建器库与我的自定义组件分离的最佳方式。

4

3 回答 3

2

我会简单地使用一个GridLayout.

containerPanel.setLayout(new GridLayout(1, 1));

这样做的好处是您可以只添加不带任何参数的子面板,并保证使用整个区域:

containerPanel.add(componentPanel);
于 2010-02-04T18:29:44.660 回答
2

您可以使用 aBorderLayout并将您的委托容器添加到该BorderLayout.CENTER位置。

于 2010-02-04T18:33:59.533 回答
0

唔。好吧,我决定重写我的组件,因此它不是扩展 JPanel(继承)的类,而是使用组合并使用空 JPanel 作为参数构造 + 它将子组件添加到 JPanel。所以我可以使用构建器库来构建空的 JPanel,然后我将它传递给我自己的组件的构造函数,所以现在我有 1 个 JPanel 而不是其中的两个,我必须保持耦合在一起。

于 2010-02-04T18:41:25.680 回答