JButton 在其边框和按钮本身之间有填充

JButton with padding between its border and the button itself

我有一个 JButton,其背景为绿色,边框为 LineBorder。我想在按钮和边框之间插入一个 space ,一种填充。 我试过 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));

有什么建议吗?

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

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

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

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

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

I've tried with setMargin(new Insets(x,y,t,z)) but it seems not working.

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

[...] if a non-default border is set on the button, it is that Border object's responsibility to create the appropriate margin space (else this property will effectively be ignored).

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