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

use*_*152 5 java swing border padding jbutton

我有一个 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));
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

use*_*551 8

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

jBtn.setBackground(Color.GREEN);
jBtn.setBorder(BorderFactory.createCompoundBorder(
               BorderFactory.createLineBorder(Color.CYAN, 5),
               BorderFactory.createLineBorder(Color.BLACK, 20)));
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我试过 setMargin(new Insets(x,y,t,z)) 但它似乎不起作用。

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

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

此外,为类保留大写名称,重命名JBtnjBtn.


Mad*_*mer 5

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

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

JBtn.setBorder(BorderFactory.createCompoundBorder(
        BorderFactory.createLineBorder(Color.CYAN, 5), 
        BorderFactory.createEmptyBorder(5, 5, 10, 10)));
Run Code Online (Sandbox Code Playgroud)