Swing:“瘦”标准组件充当容器?

时间:2010-02-04 18:21:35

标签: java swing jpanel

我需要在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的,并且外部面板尽可能地委托内部小组。

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

3 个答案:

答案 0 :(得分:2)

我只是使用GridLayout

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

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

containerPanel.add(componentPanel);

答案 1 :(得分:2)

您可以使用BorderLayout并在BorderLayout.CENTER位置添加您的委托容器。

答案 2 :(得分:0)

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