Groovy TableLayout valign属性无效:标签未顶部对齐如何解决?
Groovy SwingBuilder TableLayout valign不生效的解决办法
你遇到的问题是因为TableLayout的单元格默认开启了垂直填充(fillY: true),这会让单元格占满整行高度,组件会被居中显示,直接覆盖了valign:'top'的设置。
解决方法很简单,给td添加fillY: false属性关闭垂直填充,valign的设置就能正常生效:
import groovy.swing.SwingBuilder; import javax.swing.BorderFactory; import java.awt.Color; def ui = new SwingBuilder(); def frame; frame = ui.frame(title: "Window", bounds: [0, 0, 500, 500], layout: null) { tableLayout(size:[400,400],border: BorderFactory.createLineBorder(Color.RED, 2)) { tr { td(valign:'top', fillY: false) { label(text:"Label", border: BorderFactory.createLineBorder(Color.BLUE, 2)) } } } } frame.show();
如果需要让行占满整个TableLayout的高度,同时组件保持顶部对齐,可以给tr加上height: '*'(表示行占用剩余所有高度),配合td的fillY: false和valign:'top':
tr(height: '*') { td(valign:'top', fillY: false) { label(text:"Label", border: BorderFactory.createLineBorder(Color.BLUE, 2)) } }
这样设置后,标签就会固定在TableLayout的顶部区域,不会再居中显示。
内容的提问来源于stack exchange,提问作者Vlad
相关产品推荐
相关产品推荐

