Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 边框和按钮本身之间带有填充的JButton_Java_Swing_Border_Jbutton_Padding - Fatal编程技术网

Java 边框和按钮本身之间带有填充的JButton

Java 边框和按钮本身之间带有填充的JButton,java,swing,border,jbutton,padding,Java,Swing,Border,Jbutton,Padding,我有一个JButton,背景为绿色,边框为线边框。我想在按钮和边框之间插入一个空格,一种填充。 我试过使用setMargin(新的插图(x,y,t,z)),但它似乎不起作用。 这是我的代码 JButton JBtn=new JButton("sdfd"); JBtn.setBorder(BorderFactory.createLineBorder(Color.CYAN,5)); JBtn.setBackground(Color.GREEN); JBtn.setMargin(new Insets(

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

有什么建议吗?

边框的更改正在改变
边距的工作方式(它们似乎不再包括在确定布局的决策中)

相反,您可以使用
复合边框
,例如

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)));

我试过使用setMargin(新的插图(x,y,t,z)),但它似乎不起作用

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

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


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

谢谢。我试过你建议的解决办法。不幸的是,结果不是我想要的。我希望标签位于按钮的中心,但只有标签是绿色的,而标签和边框之间的空间仍然是黑色的。这可能吗?您希望按钮和边框之间的空间仍然是按钮的一部分吗?是的,这正是我想要的;-)绿色背景仅显示在按钮的一部分中。