JButton边框和按钮之间有填充

时间:2015-05-14 13:59:09

标签: java swing border jbutton padding

我是一个JButton,它的背景为绿色,边框为LineBorder。我想在按钮和边框之间插入一个空格,一种填充。 我尝试过使用setMargin(新的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));

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

边框是按钮的一部分,点击它们会点击按钮。您可以将背景设置为绿色,然后在背景上绘制边框:

jBtn.setBackground(Color.GREEN);
jBtn.setBorder(BorderFactory.createCompoundBorder(
               BorderFactory.createLineBorder(Color.CYAN, 5),
               BorderFactory.createLineBorder(Color.BLACK, 20)));

enter image description here

  

我尝试过使用setMargin(新的Insets(x,y,t,z)),但它似乎无效。

因为如果你阅读setMargin的文档,你会看到

  

[...]如果在按钮上设置了非默认边框,则Border对象有责任创建适当的边距空间(否则将有效地忽略此属性)。

此外,为类保留大写名称,将JBtn重命名为jBtn

答案 1 :(得分:2)

Border的更改正在改变margins的工作方式(它们似乎不再包含在用于确定布局的决策中)。

相反,您可以使用CompoundBorder,例如......

JBtn.setBorder(BorderFactory.createCompoundBorder(
        BorderFactory.createLineBorder(Color.CYAN, 5), 
        BorderFactory.createEmptyBorder(5, 5, 10, 10)));