MigLayout分为2行

时间:2013-09-10 02:05:19

标签: java swing layout miglayout

我想知道使用布局(MigLayout)我可以分成两行而不是两列吗?

panel.add(fname,"split 2");
panel.add(Fname,"wrap, pushx, growx");
panel.add(lname,"split 2");
panel.add(Lname,"wrap, pushx, growx");
panel.add(desc,"split 3,top,gaptop 3,gapright 0.5");
panel.add(new JLabel("PlaceHolder"),"top,gaptop 3");
panel.add(new JScrollPane(Desc),"grow,push,wrap");
panel.add(C,"split 2, Right");
panel.add(D,"wrap");

我希望标签“PlaceHolder”位于文字说明之下,而不是旁边 有没有办法实现它? :)

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个代码片段,显示了一个双列布局,每行有一个标签/字段对(在顶部),另外两个标签在彼此之下以及跨越textArea的行的左侧:

MigLayout layout = new MigLayout("wrap 2, debug", "[][fill, grow]");
JComponent content = new JPanel(layout);
content.add(new JLabel("First Name:"));
content.add(new JTextField());
content.add(new JLabel("Last Name:"));
content.add(new JTextField());
content.add(new JLabel("Description"));
content.add(new JScrollPane(new JTextArea(20, 20)), "spany 3");
content.add(new JLabel("placeholder"));
content.add(new JLabel(""), "newline"); // dummy to keep the placeholder at top
content.add(new JButton("Ok"), "span, split 2, align r, tag ok");
content.add(new JButton("Cancel"), "tag cancel");

需要注意的一些事情:

  • 始终将尽可能多的配置放入布局/行/列约束中
  • working around a possible bug
  • 需要虚拟标签
  • 按钮被标记为自动符合每个操作系统的大小和顺序指南