2013-04-30 52 views
1

我没有很多miglayout的经验,所以请指教。我有一个布局,第一列是一个跨越2行的JCheckBox。第二列有2个JLabel,每行1个。MigLayout奇怪的对齐顶部行为

它似乎默认布局是复选框被垂直对齐在2行的中心。我希望它与顶部JLabel中的文字对齐,所以我在JCheckBox上使用了aligny top

rightSubPanel.add(stepCheck,"span 1 2, aligny top"); 
rightSubPanel.add(stepTitle); 
rightSubPanel.add(subTitle, "gapleft 40"); 

然而JCheckbox仍然比在相邻JLabel文本略低。

见所附图片:

misaligned checkboxes

谁能解释这或暗示更好的方式来做到这一点?

更新使用调试布局如下所示。解决的办法是添加上述各stepTitles诸如5像素的间隙:

rightSubPanel.add(stepTitle,"gaptop 5"); 

enter image description here

回答

1

在MigLayout的构造添加debug标签。这将显示每个元素周围的边框。我假设你的例子中stepCheck是复选框加上“STEP 1:”。 aligny top将对齐元素的最顶端。我猜这个复选框有一些额外的边框,所以它的可见部分不在最上面。您可以在stepTitle元素周围添加一个空白边框以实现相同效果。

+0

+1对于调试指针 – ajon 2013-06-13 22:26:05

+0

像你说的那样复选框元素大于JLabel元素。为了解决这个问题,我在JLabel元素上面添加了一个5像素的间隙。非常感谢! – ajon 2013-06-13 23:17:48