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 水平紧贴文本的主要内容,如果未能解决你的问题,请参考以下文章
如果JTextField的文档为空,如何指定JButton状态[重复]