MigLayout支持向Dock添加多个组件。我想在西码头添加多个组件,从上到下。但是,似乎MigLayout只能在Dock中管理水平布局。我尝试了许多参数(例如,包裹,生长,流动)但没有成功。
那么,是否有可能在码头内包裹或设置垂直流量?或者这对于MigLayout本身是不可能的,但只能使用额外的侧面板组件?
这里是西码头内不需要的水平布局的一个例子:
如何将以下的红色,绿色,蓝色组件相互?这是代码:
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
public class MigTest extends JFrame {
MigTest() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(800, 600);
setLayout(new MigLayout("fill"));
JTextField dockW1 = new JTextField("West 1"); dockW1.setBackground(Color.red);
JTextField dockW2 = new JTextField("West 2"); dockW2.setBackground(Color.green);
JTextField dockW3 = new JTextField("West 3"); dockW3.setBackground(Color.blue);
JTextField center = new JTextField("Center"); center.setBackground(Color.lightGray);
add(center, "grow");
// HOW TO LAYOUT THESE COMPONENTS VERTICALLY INSIDE WEST DOCK ?
add(dockW1, "dock west, wrap, growy, flowy");
add(dockW2, "dock west, wrap, growy, flowy");
add(dockW3, "dock west, wrap, growy, flowy");
setVisible(true);
}
public static void main(String[] args) {
new MigTest();
}
}
[edit] :请注意,我不想将dockW1
,dockW2
,dockW3
和center
放入单个网格中因为我计划在中心区域应用复杂的布局,而不是侧面区域,这就是发明对接功能的原因:)
答案 0 :(得分:0)
恕我直言,侧面板更容易选择,结果相同。
您也可以尝试使用Quick guide中第2页所写的单元格坐标。
答案 1 :(得分:0)
我的第一个建议是将MigLayout
的构造函数更改为
new MigLayout("fill","[][grow]","[][][]")
然后将add语句更改为:
add(center, "cell 1 0 1 3, grow");
add(dockW1, "cell 0 0");
add(dockW2, "cell 0 1");
add(dockW3, "cell 0 2");
修改强>
在您修改问题后,我建议您创建一个新的JPanel
对象说dockWest
并添加组件dockW1
,dockW2
和dockW3
到dockWest
并最终将dockWest
停靠在当前JFrame
的西边,如:
JPanel dockWest = new JPanel();
dockWest.setLayout(new MigLayout("fill", "[]", "[grow][grow][grow]");
dockWest.add(dockW1, "cell 0 0");
dockWest.add(dockW2, "cell 0 1");
dockWest.add(dockW3, "cell 0 2");
add(dockWest, "dock west, growy");