Java JButton页边距。当nimbus plaf时不受尊重
安装nimbus look and feel时,不尊重Java JButton页边距。当nimbus plaf时不受尊重,java,swing,jbutton,nimbus,uidefaults,Java,Swing,Jbutton,Nimbus,Uidefaults,安装nimbus look and feel时,不尊重JButton的属性margin。 我需要一些“小”按钮,但nimbus强制按钮文本周围的空间变大,所以我只能得到“非常大”的按钮 我发现有一个属性叫做: Button.contentMargins 这是预设的大值。 我尝试用以下代码覆盖它: UIManager.getDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0)); 在主界面中,设置nimbus
JButton
的属性margin
。 我需要一些“小”按钮,但nimbus强制按钮文本周围的空间变大,所以我只能得到“非常大”的按钮
我发现有一个属性叫做:
Button.contentMargins
这是预设的大值。我尝试用以下代码覆盖它:
UIManager.getDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0));
在主界面中
,设置nimbus外观之后。但是什么也没有发生,按钮文本周围的空白仍然很大。 有什么想法吗?基于线程,可以从
Nimbus Defaults
中更改并为某些内容分配一个值
但是你确定你需要这个输出到GUI吗
v、 带Nimbus L&F的美国基本JButton
源代码
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.InsetsUIResource;
public class NimbusJPanelBackGround {
public NimbusJPanelBackGround() {
JButton btn = new JButton(" Whatever ");
JButton btn1 = new JButton(" Whatever ");
JPanel p = new JPanel();
p.add(btn);
p.add(btn1);
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.add(p, BorderLayout.CENTER);
f.setSize(200, 100);
f.setLocation(150, 150);
f.setVisible(true);
}
public static void main(String[] args) {
try {
for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(laf.getName())) {
UIManager.setLookAndFeel(laf.getClassName());
UIManager.getLookAndFeelDefaults().put("Panel.background", Color.white);
UIManager.getLookAndFeelDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0));
}
}
} catch (Exception e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
NimbusJPanelBackGround nimbusJPanelBackGround = new NimbusJPanelBackGround();
}
});
}
}
对于有趣的问题,更改
JComponent.sizeVariant
的值也可能有效,如中所述