Thu*_*rge 3 java swing miglayout layout-manager
我想在MigLayout中创建一个表单.我希望任何文本字段都标有前面的小JLabel,文本字段随着空间的增加而增长.我可以在以下代码中成功完成此操作:
JFrame frame = new JFrame("Test");
JPanel panel = new JPanel(new MigLayout("", "fill", ""));
panel.add(new JLabel("Testing"));
panel.add(new JTextField(), "growx, pushx, wrap");
frame.setContentPane(panel);
frame.pack();
frame.setMinimumSize(new Dimension(400, 100));
frame.setPreferredSize(new Dimension(400, 100));
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
结果如下所示,这是预期的(JLabel是最小必需大小,JTextField占用了该区域的其余部分):

但是,如果我将JEditorPane放在这个下方并使其跨越整个窗口的长度,那么如果我放大窗口,JLabel会变大并增长.代码更改如下所示:
...
panel.add(new JTextField(), "growx, pushx, wrap");
//New line of code here:
panel.add(new JEditorPane(), "growx, pushx, span");
frame.setContentPane(panel);
...
Run Code Online (Sandbox Code Playgroud)
这导致我不期望的结果(JLabel已经增长):

我试图通过为JLabel添加MigLayout参数来解决这个问题,比如"growx 0"和"shrink",但这似乎对标签的大小没有任何影响.
如何防止JLabels在这种情况下成长?
我想到了!问题出在JEditorPane上的参数:
panel.add(new JEditorPane(), "growx, pushx, span");
Run Code Online (Sandbox Code Playgroud)
事实证明,使用时span,growx, pushx是不必要的(因为它已经增大了),当与此结合使用时,它会产生上面显示的效果.我的猜测是growx适用于标记的所有单元格span,但pushx仅适用于第一个单元格.
因此,span使组件占用多个单元格,它们都被分配了默认growx权重,但pushx只使第一个单元格增长.
因此,修复生产线的正确方法很简单:
panel.add(new JEditorPane(), "span");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |