我正在使用 FlowLayout
JPanel
。当子组件高度不同时,面板看起来很难看。我正在寻找一种使它们顶部对齐的解决方案(类似于 HTML 中表格单元格的 valign="top"
)。
最佳答案
我知道这个问题是在一年多以前提出的,但像我一样,我认为很多人会偶然发现这篇论坛帖子,然后尝试像错误报告中建议的那样做出解决方法(只是对我没用)仅供引用)。
自 JDK 1.6 以来,无论哪种方式都有更好的答案。 Flowlayout 有以下方法:
public void setAlignOnBaseline(boolean alignOnBaseline)
如果您在 flowlayout 上使用此方法并将其设置为 true,则当 flowlayout 布置组件时,它将检查每个组件的基线并沿该基线对齐组件。
但这不是您需要做的全部。
有问题的组件必须以这种方式覆盖以下两个方法:
@Override
public Component.BaselineResizeBehavior getBaselineResizeBehavior() {
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
}
@Override
public int getBaseline(int width, int height) {
return 0;
}
它们是 JComponent 中的方法,布局和布局管理器使用这些方法来确定如何布局组件。
如果您采取上述步骤,所有组件都会沿着每一行的顶部对齐。当然,如果您只想使用像 JButton 这样的组件,您显然必须扩展它才能实现您想要的目标……但它不像使用必须调试的解决方法覆盖 layoutcontainer 那样工作。至少我是这么认为的。
祝你好运, -阿萨夫
关于java - FlowLayout 的顶部对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743177/