我需要在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
的,并且外部面板尽可能地委托内部小组。
我不想这样做,但似乎是将构建器库与自定义组件分离的最佳方法。
答案 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而不是其中的两个我必须保持耦合在一起。