我似乎无法找到正确的布局管理器,也许它不存在,所以我想在miglayout中做到这一点,但我似乎无法找到我的方法在那里做到这一点任
我发现的大多数文档,教程和示例都没有在JPanel中添加内容0.o
我遇到的问题是,我在JPanel(B)中有两个JPanels(C 1& 2),而JPanel(B)内部则是一个更大的可调整大小的JPanel(A)。 现在都是最低级别" C" JPanels包含5个按钮,当最高级别" A"调整按钮的大小并减小宽度:
到此:
正如您所看到的,我在最低级别使用FlowLayout" C" JPanels正在做它的工作!
c.setLayout(new FlowLayout(FlowLayout.LEFT,0,0))
但是" B"持有C&C的JPanel完全符合我对水平部分的要求
b.setLayout(new BoxLayout(b, BoxLayout.Y_AXIS));
我不希望它在高处做到这一点!
所以有人能指出我正确的方向,就像教程或文档那样涵盖这些东西吗?对于miglayout或swing布局管理器?
答案 0 :(得分:0)
我已经与MigLayout
经理创建了一个解决方案。面板保持他们的
当窗口调整大小并且永远不会缩小到大小以下时,高度很好
需要按住所有按钮。
package com.zetcode;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class MigLayoutSolution extends JFrame {
public MigLayoutSolution() {
initUI();
}
private void initUI() {
JPanel pnl = new JPanel(new MigLayout());
pnl.add(createPanel1("First"), "push, grow, wrap");
pnl.add(createPanel2("Second"), "push, grow");
add(pnl);
pack();
setTitle("MigLayout solution");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private JPanel createPanel1(String text) {
JPanel pnl = new JPanel(new MigLayout());
pnl.add(new JButton("A"));
pnl.add(new JButton("B"));
pnl.add(new JButton("C"));
pnl.add(new JButton("D"));
pnl.setBorder(BorderFactory.createTitledBorder(text));
return pnl;
}
private JPanel createPanel2(String text) {
JPanel pnl = new JPanel(new MigLayout());
pnl.add(new JButton("E"));
pnl.add(new JButton("F"));
pnl.add(new JButton("G"));
pnl.add(new JButton("H"));
pnl.setBorder(BorderFactory.createTitledBorder(text));
return pnl;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
MigLayoutSolution ex = new MigLayoutSolution();
ex.setVisible(true);
}
});
}
}
第一张照片显示两个面板有足够的空白空间。
第二张图显示了最小尺寸的面板。