【问题标题】:JButton with padding between its border and the button itselfJButton 在其边框和按钮本身之间有填充
【发布时间】: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));

有什么建议吗?

【问题讨论】:

  • 您希望按钮和边框之间的空间仍然是按钮的一部分吗?
  • 是的,这正是我想要的 ;-) 绿色背景仅在按钮的一部分中。

标签: java swing border jbutton padding


【解决方案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)));
    

    【讨论】:

    • 谢谢。我尝试了您建议的解决方案。不幸的是,结果不是我想要的。我希望标签位于按钮的中心,但只有标签是绿色的,而标签和边框之间的空间保持黑色。这可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2021-10-22
    • 2018-03-07
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多