JButton 在其边框和按钮本身之间有填充
Posted
技术标签:
【中文标题】JButton 在其边框和按钮本身之间有填充【英文标题】:JButton with padding between its border and the button itself 【发布时间】:2015-07-26 04:28:50 【问题描述】:我有一个 JButton,它的背景为绿色,边框为 LineBorder。我想在按钮和边框之间插入一个空格,一种填充。 我试过 setMargin(new Insets(x,y,t,z)) 但它似乎不起作用。 这是我的一段代码。
JButton JBtn=new JButton("sdfd");
JBtn.setBorder(BorderFactory.createLineBorder(Color.CYAN,5));
JBtn.setBackground(Color.GREEN);
JBtn.setMargin(new Insets(5,5,10,10));
有什么建议吗?
【问题讨论】:
您希望按钮和边框之间的空间仍然是按钮的一部分吗? 是的,这正是我想要的 ;-) 绿色背景仅在按钮的一部分中。 【参考方案1】:边框是按钮的一部分,单击它们将单击按钮。您可以将背景设置为绿色,然后在背景上绘制边框:
jBtn.setBackground(Color.GREEN);
jBtn.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.CYAN, 5),
BorderFactory.createLineBorder(Color.BLACK, 20)));
我已经尝试使用 setMargin(new Insets(x,y,t,z)) 但它似乎不起作用。
因为如果您阅读setMargin
的文档,您会看到
[...] 如果在按钮上设置了非默认边框,则 Border 对象负责创建适当的边距空间(否则此属性将被有效忽略)。
另外,为类保留大写名称,将 JBtn
重命名为 jBtn
。
【讨论】:
【参考方案2】:对Border
的更改正在改变margins
的工作方式(它们似乎不再包含在确定布局的决策中)。
相反,您可以使用CompoundBorder
,例如...
JBtn.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.CYAN, 5),
BorderFactory.createEmptyBorder(5, 5, 10, 10)));
【讨论】:
谢谢。我尝试了您建议的解决方案。不幸的是,结果不是我想要的。我希望标签位于按钮的中心,但只有标签是绿色的,而标签和边框之间的空间保持黑色。这可能吗?以上是关于JButton 在其边框和按钮本身之间有填充的主要内容,如果未能解决你的问题,请参考以下文章
iPhone Xs - 使用 AVCaptureVideoPreviewLayer 时,为啥我的 UIView 的上边框和安全区域的上边框之间有巨大的填充?