java - 使用 Miglayout 缩放 JPanel
问题描述
我有一个大型 JPanel,可以将 0-4 个 JPanel 作为行添加到其中。
我的目标是将添加的面板缩放到要添加到的大面板的大小(取决于存在多少面板)
1 个面板 = 100% 的面板
2 个面板 = 50% 的面板每
3 个面板 =每个面板的 33%
我的 jank 解决方案是将大面板分成 12 组行/单元格(可被 3 和 4 整除)
setLayout(new MigLayout("","[100%]","[8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%]"));
然后根据添加的面板数量来扩展它们的跨度
if(count == 1){
add(panel1, "cell 0 0, span 1 12, grow");
}
else if (count == 2){
add(panel1, "cell 0 0, span 1 6, grow");
add(panel2, "cell 0 6, span 1 6, grow");
...
...
这行得通……但是超级难看,我敢肯定一定有更简单的方法。
解决方案
我打开了 GridLayout,但不知道如何实现。
当您甚至不知道如何使用 JDK 中提供的基本布局管理器时,为什么还要使用 MigLayout?
没有诀窍。您创建一个面板,设置布局并将组件添加到面板。
JPanel parent = new JPanel( new GridLayout(0, 1) );
parent.add(child1);
parent.add(child2);
,,,
阅读关于布局管理器的 Swing 教程,了解所有标准布局管理器的基础知识。
推荐阅读
- shell - 无法通过 shell 脚本运行 spark sql
- ios - iOS 原生用户界面和 Qt 核心代码
- twitter-bootstrap - 如何使用 Vue.js 在第一次单击而不是第二次单击时打开 Bootstrap 4 模式
- networking - 如何在 scapy 中创建自定义顶层第 2 层标头?
- asp.net-core - 从 ASP.NET Core 2.2 中的控制器调用 SignalR 组
- python - 用列表倒退
- algorithm - “合并 2 个包”问题的大 O 时间复杂度
- python - 计算特定列中 0 的数量
- php - 进行 laravel 查询以搜索两次之间的数据
- pygame - 如何修复,Pygame 不会进入下一个文本