我必须构建一个带有许多控件的相当大的表单。控件分为基本控件/设置和扩展控件/设置。用户可以决定他是只想查看基本控件还是同时查看基本控件和扩展控件。
我已将所有扩展控件放到它们自己的 JPanel 上,以便我可以通过显示或隐藏此面板轻松地在两个 View 之间切换。
目前我正在使用 GroupLayout,但不同面板上的控件未对齐:
Label aaa: Text field
Label a: Text field
Label aaaaaa: Text field
----------------------------
Label b: Text field
Label bbb: Text field
Label bb: Text field
不幸的是,我现在找到了“同步”两个面板布局的方法(除了使用 AbsoluteLayout 和固定控件坐标)
- 有什么办法可以做到这一点吗?
- 我的整个设计有缺陷吗?
编辑:如果可能的话,我想保留 GroupLayout 管理器。
最佳答案
据我所知,没有任何 Swing LayoutManager(来自 JRE 或开源)可以跨越多个面板。
我目前正在为我的 DesignGridLayout 开发这样一个功能(我称之为“布局同步”)项目,但实现起来并不容易(我大约 2 周前就开始了,但我仍然不知道是否以及何时会得到一些有趣的东西,但我仍然对此抱有很高的期望;-))
您可以检查的一个选项是将所有组件添加到同一个面板(然后只有一个 GroupLayout)并根据用户的选择隐藏/显示它们。希望 GroupLayout 会根据情况调整大小(在调用 pack() 之后)。
如果 GroupLayout 表现良好,那么每次用户更改他的选择以显示/隐藏扩展字段后,只需调用 pack() 即可。
否则,每次用户更改他的选择时,您都必须手动设置面板的大小。
关于java - 布局管理器可以生成多个 JPanel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/491059/