【问题标题】:Align JButton icon to the left and keep text centered将 JButton 图标左对齐并保持文本居中
【发布时间】:2017-06-29 09:13:59
【问题描述】:

我想设置一个 JButton,使其图标与左侧对齐,而文本居中。

我找到了如何让其中一个处于左侧、另一个右侧或两者处于相同设置,但我找不到我要查找的内容。

当然,我总是可以重新定义 paint 方法,但我正在寻找一种更精简的方法来做到这一点。

【问题讨论】:

    标签: java swing jbutton


    【解决方案1】:

    您可以将layout manager 添加到您的JButton,例如Border Layout 会有所帮助:

    您创建一个带有IconJLabel 和一个带有“点击我”的文本:

    JLabel iconLabel = new JLabel(new ImageIcon(this.getClass().getResource("king.png")));
    JLabel clickMe = new JLabel("Click me", SwingConstants.CENTER); //We give it the center alignment so it stays on the center of the label.
    

    然后你创建你的JButton,给它边框布局,然后在你想要的位置添加你的组件。

    button.setLayout(new BorderLayout());
    button.add(iconLabel, BorderLayout.WEST);
    button.add(clickMe, BorderLayout.CENTER);
    

    我给每个标签一个边框,这样你就可以看到每个标签的样子,因为clickMe 标签不会在JButton 的中心,而是在JLabel 的中心:

    我认为这没什么大不了的,因为没有边框几乎察觉不到

    【讨论】:

    • 太棒了,谢谢!那么当滚动,按下或选择时,它的显示也会不同吗?
    • @VicSeedoubleyew 你所说的“翻身”是什么意思?并与“显示不同”?当点击它时,它将像任何JButton 被按下并具有相同的功能,它所做的只是改变它的外观
    • @VicSeedoubleyew 我明白你所说的“翻转”是什么意思,但我仍然不明白你所说的“显示不同”是什么意思,你能澄清一下吗?
    • 我的意思是,例如,如果您查看 stackoverflow 上的“添加评论”按钮,当您将鼠标悬停在它上面时,背景颜色会发生变化。在默认的 JButton 上,悬停时或使用键盘选择按钮时,外观也会发生变化。我想知道您提出的解决方案是否会改变悬停或选择时的外观。
    • @VicSeedoubleyew 我建议您使用minimal reproducible example 提出一个新问题,您的代码中有这种方法以及您想要实现的图像示例,否则这个问题将变为 2问题。如果这解决了您的原始问题“对齐按钮左侧的图标并保持文本居中”,也请接受答案
    猜你喜欢
    • 2012-10-13
    • 2019-10-01
    • 2014-05-27
    • 2017-10-20
    • 2016-10-11
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多