我正在使用MigLayout将组件添加到Java中的JPanel。 我的问题是,尽管在单元格约束中加入了“wrap”,但它并不是一致的。有些组件包装而有些组件没有 - 特别注意图像中的最后一行(应该是2行)。
JPanel panel = new JPanel(new MigLayout("gap 0, insets 0", "",""));
JButton delete = new JButton("Delete");
JButton zoomSel = new JButton("Zoom Sel");
JButton zoomReset = new JButton("Zoom Reset");
panel.add(delete, "span 2 2, grow");
panel.add(zoomSel, "spanx 2, growx, wrap");
panel.add(zoomReset,"growx,wrap 5");
JButton cut = new JButton("Cut");
JButton copy = new JButton("Copy");
JButton paste = new JButton("Paste");
JButton loopSelRgn = new JButton("Loop Sel. Rgns");
JButton selRgnRow = new JButton("Sel Rgns Row");
panel.add(cut);
panel.add(copy);
panel.add(loopSelRgn, "spanx 2, growx, wrap");
panel.add(paste, "spanx 2, growx");
panel.add(selRgnRow, "spanx 2,growx,wrap 5");
JButton duplicate = new JButton("Duplicate");
JButton selectAll = new JButton("Select All");
JButton mute = new JButton("Mute");
JButton shift = new JButton("Shift");
panel.add(duplicate, "span 2 2, grow");
panel.add(selectAll, "span 2 2, grow, wrap");
panel.add(mute, "spanx 2, growx");
panel.add(shift, "spanx 2, growx");
编辑:感谢大家的回答,虽然我的解决方案是切换到百分比限制来设置高度而不是依靠跨度。这似乎解决了包裹的奇怪现象。
答案 0 :(得分:1)
我看不出为什么你在使用wrap 5
时看起来像你需要4.我相信已经达到你想要的只是
wrap 4
添加到第一个构造函数参数wrap
(不带参数)答案 1 :(得分:-1)
技术原因是duplicate / selectAll按钮的行间距(有意吗?):您正在包装第一个跨越的行,而第二个用于以下组件。您可以通过在包装中添加间隙来显示该事实,例如f.i。
panel.add(duplicate, "span 2 2, grow");
panel.add(selectAll, "span 2 2, grow, wrap 10");
从技术上讲,您可以通过换行符约束来解决它:
panel.add(mute, "newline, spanx 2, growx");
panel.add(shift, "spanx 2, growx");
真正的解决方案是重构约束:
类似的东西:
JPanel panel = new JPanel(new MigLayout("gap 0, insets 0, wrap 2", "",""));
panel.add(delete, "spany 2, grow");
panel.add(zoomSel, "growx");
panel.add(zoomReset,"growx");
panel.add(cut, "split 2");
panel.add(copy);
panel.add(loopSelRgn, "growx");