流布局的顶部对齐方式

2022-09-04 20:16:00

我正在使用 .当子组件高度不同时,面板看起来很丑陋。我正在寻找一种解决方案来使它们顶部对齐(类似于HTML中的表格单元格)。FlowLayoutJPanelvalign="top"


答案 1

我意识到这个问题在一年前就被问过了,但像我一样,我认为许多人会偶然发现这个论坛帖子,并试图做出一个解决方法,就像错误报告中建议的那样(失败为我工作只是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这样的组件,你显然必须扩展它才能实现你想要的目标......但它并不像使用必须调试的解决方法覆盖布局容器那样多。至少我是这么认为的。

祝你好运,-阿萨夫


答案 2

其他人希望以错误报告的形式做到这一点(其中还列出了解决方法)。

看看

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4295966