Java:无法让 JButton 水平紧贴文本

Posted

技术标签:

【中文标题】Java:无法让 JButton 水平紧贴文本【英文标题】:Java: Can't get JButton to be horizontally snug around text 【发布时间】:2011-11-20 16:45:02 【问题描述】:

我有一个JButton,它比我输入的文本要宽得多。我对此进行了研究,并且不断发现我使用Jbutton.setMargin(new Insets(0,0,0,0)); 的建议,但这似乎不起作用。此外,setMaximumSize 没有效果,虽然如果我还设置了最小尺寸,它确实会改变按钮的尺寸。但我不想手动设置大小。我只是希望它不那么宽。我错过了什么?

这是我创建按钮的代码:

plusminus = new JButton("+");
plusminus.setMargin(new Insets(0,0,0,0));

这就是它的样子:

谢谢。

【问题讨论】:

还有更多您没有告诉我们的信息,特别是包含按钮的容器正在使用什么布局管理器。您可能希望创建并发布一个 SSCCE 来证明您的问题。顺便说一句,你不是用 NetBeans 的 GUI builder 创建你的 GUI 吗? 我正在手动制作我的 GUI。在这种情况下,布局是 GroupLayout。 嗯,我找到了一个解决我的问题的方法,似乎对我尝试过的每一个 L&F 都有效。首先,我必须将插图设置为 0。然后我还必须为按钮设置最小和最大尺寸集。如果未设置最小尺寸,则最大值无效。但是如果我设置一个最小值,它将始终使用最大值。更改插图是必要的,以避免“+”变成“...”,因为按钮认为文本不适合。我很满意。 @TimothyMiller 你能用你的代码和生成的屏幕截图添加答案吗? 不要为了特定的 LayoutManager 而调整组件的大小提示。相反,请使用支持您想要的配置选项的 LayoutManager :-) 【参考方案1】:

我正在手动制作我的 GUI。在这种情况下,布局是 GroupLayout

那么这可能是您的问题的一部分。您的 JButton 的大小受包含它的容器的布局限制。如果您绝对需要使用 GroupLayout(顺便说一下,我讨厌),一种可能的解决方案是将您的 JButton 放置在使用 FlowLayout 的 JPanel 或其他允许灵活大小的组件的布局中,并将此 JPanel 放入当前的容器中按住你的按钮。请注意,如果您的按钮比 JPanel 大。

【讨论】:

【参考方案2】:

在百灵鸟上,我尝试了负左和右插图,令人难以置信的是它奏效了。然后我不需要弄乱最小/最大/首选尺寸。顺便说一句,我的按钮位于 JTable 的一列中。

【讨论】:

以上是关于Java:无法让 JButton 水平紧贴文本的主要内容,如果未能解决你的问题,请参考以下文章

我可以让 Swing JButton 的边距更小吗?

如果JTextField的文档为空,如何指定JButton状态[重复]

[UE4]让箭头保持水平

如何在 NetBeans 中控制 JButton HTML 文本的居中?

在 JButton 操作上多次替换 JLabel 文本

java 给按钮加监听的快捷键是啥???(快捷键加监听减少写代码的时间)