Java 多个JPanel-所有按钮大小相同

Java 多个JPanel-所有按钮大小相同,java,jpanel,size,jbutton,miglayout,Java,Jpanel,Size,Jbutton,Miglayout,我有一个主面板,其中包含多个面板。每个“子”面板包含一个(或多个)JButton。因为我同时显示所有面板,所以我希望所有按钮的大小都相同(以保持一致性) 此代码说明了我的问题: public class Test { public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f

我有一个主面板,其中包含多个面板。每个“子”面板包含一个(或多个)JButton。因为我同时显示所有面板,所以我希望所有按钮的大小都相同(以保持一致性)

此代码说明了我的问题:

public class Test
{
   public static void main(String[] args)
   {
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      f.setSize(new Dimension(200, 200));

      // 1st Panel
      JPanel panel1 = new JPanel(new MigLayout());
      panel1.add(new JButton("button in panel 1"));

      // 2nd Panel
      JPanel panel2 = new JPanel(new MigLayout());
      panel2.add(new JButton("2nd button"));

      JPanel parent = new JPanel(new MigLayout("wrap"));
      parent.add(panel1, "pushx, growx");
      parent.add(new JSeparator(), "pushx, growx");
      parent.add(panel2, "pushx, growx");

      f.add(parent);
      f.setVisible(true);
   }
}

“面板1中的按钮”的大小与另一个面板中的按钮不同。是否有一种“简单”的方法来使用布局设置它们的大小?(硬编码大小是而不是选项)

我认为您没有仔细阅读文档,以演示我编写的代码的用途。您不应该复制该链接中显示的相同代码段。他们指定必须将更新的组件传递到方法中。您可以通过将“大”替换为“小”或“小”来替换大小


最简单的方法是java中的外观。但它只提供了按钮大小的三种可能变化。检查此链接我使用的是Nimbus LAF,我添加了sizeVariant属性,但我仍然没有得到想要的结果。您是如何更改大小的?您能告诉我吗,因为我共享的链接是java文档,这意味着如果您正确遵循说明,它应该可以工作这就是我所做的:
JButton b1=JButton(“面板1中的按钮”);
b1.putClientProperty(“JComponent.sizeVariant”,“small”);
panel1.add(b1);
JButton b2=JButton(“第二个按钮”);
b2.putClientProperty(“JComponent.sizeVariant”,“small”);
panel2.add(b2)
在使框架可见之前,我添加了:
SwingUtilities.updateComponentTreeUI(f);
我是否遗漏了什么?
import javax.swing.*;
import java.awt.*;
public class Demo {

    /**
     * @param args
     */
    JFrame frame ;
    JButton btn;
    public Demo()
    {
        frame = new JFrame("Example");
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,400);
        frame.setLayout(new FlowLayout());
        btn = new JButton("Example");
        btn.putClientProperty("JComponent.sizeVariant", "large");
        SwingUtilities.updateComponentTreeUI(btn);
        frame.add(btn);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        Demo d = new Demo();
    }

}