流布局的顶部对齐方式
我正在使用 .当子组件高度不同时,面板看起来很丑陋。我正在寻找一种解决方案来使它们顶部对齐(类似于HTML中的表格单元格)。FlowLayout
JPanel
valign="top"
我正在使用 .当子组件高度不同时,面板看起来很丑陋。我正在寻找一种解决方案来使它们顶部对齐(类似于HTML中的表格单元格)。FlowLayout
JPanel
valign="top"
我意识到这个问题在一年前就被问过了,但像我一样,我认为许多人会偶然发现这个论坛帖子,并试图做出一个解决方法,就像错误报告中建议的那样(失败为我工作只是fyi)。
无论哪种方式,自JDK 1.6以来都有更好的答案。Flowlayout 具有以下方法:
public void setAlignOnBaseline(boolean alignOnBaseline)
如果在流程布局上使用此方法并将其设置为 true,则当 flowlayout 对组件进行布局时,它将检查每个组件的基线,并沿此基线对齐组件。
但这不是您需要做的全部工作。
有问题的组件必须以这种方式重写以下两种方法:
@Override
public Component.BaselineResizeBehavior getBaselineResizeBehavior() {
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
}
@Override
public int getBaseline(int width, int height) {
return 0;
}
它们是 JComponent 中的方法,布局和布局管理员使用这些方法来确定如何布局组件。
如果执行上述步骤,则所有组件都将沿每行的顶部对齐。当然,如果你只是想使用像JButton这样的组件,你显然必须扩展它才能实现你想要的目标......但它并不像使用必须调试的解决方法覆盖布局容器那样多。至少我是这么认为的。
祝你好运,-阿萨夫