我正在编写一个应用程序,我希望在其中具有此布局
45% 35% 10%
-----------------------------------------------
| | | |
| | | |
60% | | | |
| | | |
-------------------------------------| |
| | |
40% | | |
| | |
------------------------------------------------
我以这种方式使用 MigLayout 管理器构建布局
MigLayout ml = new MigLayout("debug",
"10[45%!,fill]5[35%!,fill]10[20%!,fill]",
"10[60%!,fill]5[40%!,fill]");
setLayout(ml);
add(panel1, "cell 0 0 1 1, grow");
add(panel1, "cell 1 0 1 1, grow");
add(panel3, "cell 2 0 1 2, grow");
add(panel4, "cell 0 1 2 1, grow");
问题是,如果我调整窗口大小,布局不会遵循新的大小。它只是保持相同的大小。
如何修复此问题以便刷新布局并获取窗口的大小?
请注意,我希望每个面板也填充其单元格。
谢谢。
最佳答案
使用以下代码
import java.awt.*;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
public class MigLay extends JFrame {
private MigLay() {
super("Button Layout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new MigLayout("debug",
"10[45%!,fill]5[35%!,fill]10[20%!,fill]",
"10[60%!,fill]5[40%!,fill]"));
createPanels();
pack();
setVisible(true);
}
private void createPanels() {
JPanel panel1 = new JPanel(), panel2 = new JPanel(), panel3 = new JPanel(), panel4 = new JPanel();
JLabel label = new JLabel("Panel 1");
panel1.add(label);
label = new JLabel("Panel 2");
panel2.add(label);
label = new JLabel("Panel 3");
panel3.add(label);
label = new JLabel("Panel 4");
panel4.add(label);
add(panel1, "cell 0 0 1 1, grow");
add(panel2, "cell 1 0 1 1, grow");
add(panel3, "cell 2 0 1 2, grow");
add(panel4, "cell 0 1 2 1, grow");
}
public static void main(String[] args) {
new MigLay();
}
}
所做的更改:1) 您调用了面板 1 两次,因此我创建了面板 2。
2) 我在 中创建了您的布局setLayout()
方法。
如果这些更改都不能解决您的问题,则问题不在于您上面发布的代码,而在于代码中的某个位置。
关于java - MigLayout 在窗口调整大小后根据百分比更新单元格大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39979020/