【问题标题】:Java JButton SizeJava JButton 大小
【发布时间】:2017-09-20 21:23:23
【问题描述】:

我知道还有其他一些与此类似的问题,但我还没有看到我的具体问题得到解答。我想在不改变外观的情况下更改 JButton 的大小。例如,如果我使用 setPreferredSize,我会失去白色背景颜色和圆角。我只想删除周围的填充,所以按钮只比它的标签大一点。

    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame jFrame = new JFrame("Label");
    jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.insets = new Insets(10, 10, 10, 10);
    JPanel jPanel = new JPanel(new GridBagLayout());

    JButton jButtonUp = new JButton("Upd");
    //jButtonUp.setPreferredSize(new Dimension(30, 20));
    jPanel.add(jButtonUp, gbc);

    gbc.gridy = 1;
    JButton jButtonDn = new JButton("Del");
    //jButtonDn.setPreferredSize(new Dimension(30, 20));
    jPanel.add(jButtonDn, gbc);

    jFrame.add(jPanel);
    jFrame.pack();
    jFrame.setVisible(true);

使用 Mac OSX Sierra。

我拥有的是这个:

我使用 setPreferredSize 得到的是:

我想要的是这个:

【问题讨论】:

  • 已更新代码
  • 我无法重现您的错误。你能显示完整的代码吗?请制作两个按钮,以便比较它们。您使用什么外观和感觉,您使用的是什么操作系统和版本?
  • 这两个按钮在 Windows 10 和 Java 8 上对我来说具有相同的外观。我正在使用两者的最新更新。对不起,但它似乎可能是 Mac 特定的。 (顺便说一句,两个按钮在我的屏幕上大小相同且很小。我们通常不直接设置 GUI 组件的大小是有原因的,因为每台机器的屏幕大小、像素密度和默认字体大小不同。可能是最好不要设置大小。)
  • 您将代码更新为完整示例,但是当我在 main 方法中复制代码时,创建的按钮既不是白色的,也没有圆边。
  • 是的。这就是 setPreferredSize 的问题。把它注释掉。

标签: java jbutton


【解决方案1】:

检查这个答案here,只需这样做

行后:

JButton jButtonUp = new JButton("Upd");

添加:

jButtonUp.setBorder(null);
jButtonUp.setMargin(new Insets(0,0,0,0));

然后将按钮添加到面板中:

jPanel.add(jButtonUp, gbc);

【讨论】:

  • 谢谢,但不好。这只是摆脱了按钮的边框并只显示文本。此外, jButtonDn.setMargin(new Insets(0,0,0,0)) 什么也不做。
  • 您可以查看参考,即设置边距。它应该适用于你的情况。
  • 不确定“参考”是什么意思。
  • @JohnSmith,下面是参考的链接答案。 stackoverflow.com/a/2713814/7347939
  • 不,那行不通。 setMargin 不像我之前所说的那样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2020-09-29
  • 1970-01-01
  • 2014-11-06
相关资源
最近更新 更多