Java按钮大小

Java按钮大小,java,jbutton,Java,Jbutton,我知道还有一些类似的问题,但我还没有看到我的具体问题得到回答。我想在不改变外观的情况下改变JButton的大小。例如,如果使用setPreferredSize,则会丢失白色背景色和圆角。我只想移除周围的填充物,这样按钮就只比标签稍微大一点 JFrame.setDefaultLookAndFeelDecorated(true); JFrame jFrame = new JFrame("Label"); jFrame.setDefaultCloseOperation(Wind

我知道还有一些类似的问题,但我还没有看到我的具体问题得到回答。我想在不改变外观的情况下改变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得到的是:

我想要的是:

检查这个答案,简单地做

行后:

JButton jButtonUp = new JButton("Upd");
加:

然后将按钮添加到面板:

jPanel.add(jButtonUp, gbc);
检查这个答案,简单地做

行后:

JButton jButtonUp = new JButton("Upd");
加:

然后将按钮添加到面板:

jPanel.add(jButtonUp, gbc);


已用代码更新我无法重现您的错误。你能显示完整的代码吗?请做两个按钮以便比较。您使用的是什么外观和感觉,您使用的是什么操作系统和版本?这两个按钮在Windows 10和Java 8上的外观都相同。我正在了解这两方面的最新情况。抱歉,但它可能是特定于Mac的。(顺便说一句,在我的屏幕上,两个按钮的大小都一样,而且都很小。我们通常不直接设置GUI组件的大小是有原因的,这是因为每台机器的屏幕大小、像素密度和默认字体大小不同。最好根本不设置大小。)您将代码更新为完整示例,但是当我在main方法中复制代码时,创建的按钮既不是白色的,也没有圆边。是的。这就是setPreferredSize的问题。用代码更新我不能重现你的错误。你能显示完整的代码吗?请做两个按钮以便比较。您使用的是什么外观和感觉,您使用的是什么操作系统和版本?这两个按钮在Windows 10和Java 8上的外观都相同。我正在了解这两方面的最新情况。抱歉,但它可能是特定于Mac的。(顺便说一句,在我的屏幕上,两个按钮的大小都一样,而且都很小。我们通常不直接设置GUI组件的大小是有原因的,这是因为每台机器的屏幕大小、像素密度和默认字体大小不同。最好根本不设置大小。)您将代码更新为完整示例,但是当我在main方法中复制代码时,创建的按钮既不是白色的,也没有圆边。是的。这就是setPreferredSize的问题。评论一下。谢谢,但不好。这样就去掉了按钮的边框,只显示文本。另外,jButtonDn.setMargin(新的Insets(0,0,0,0))不起任何作用。您可以检查设置边距的引用。它应该适用于你的情况。不确定“参考”是什么意思。@JohnSmith,下面是参考的链接答案。不,那不行。setMargin没有像我前面说的那样工作。谢谢,但不好。这样就去掉了按钮的边框,只显示文本。另外,jButtonDn.setMargin(新的Insets(0,0,0,0))不起任何作用。您可以检查设置边距的引用。它应该适用于你的情况。不确定“参考”是什么意思。@JohnSmith,下面是参考的链接答案。不,那不行。setMargin没有像我前面说的那样工作。