java - FlowLayout 的顶部对齐

标签 java swing layout

我正在使用 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/

相关文章:

java - 查明 JLabel 的文本是否超过标签大小

Android 应用程序在 Activity 更改时崩溃,可能受布局影响

jquery - 将 div 在其他输入和 div 中垂直和水平居中

android - 如何访问 "include"布局内的按钮

java - 设置 JList 显示的行数 (Java)

Java android EventBus 检测服务器是否发送到手机消息

Java 连接到 SQL Server 数据库 : Login failed for user 'sa'

java - JPanel定制油漆

java - 在 Java 中初始化最终字段

java - 是否有将 F6 作为默认加速器的 Swing 元素?