如何根据 window 的大小调整 JPanel 的大小

How to adapt the size of a JPanel with the size of the window

我是 java 的新手,作为一个项目,我们必须编写一个计算器 反向波兰表示法。

我们在 window 的显示中遇到了问题,因为当我们扩展 window[=14 时,包含 2 个 JPanel Chiffres 和 Operateurs 的 JPanel Bas 的大小没有改变=]

JFrame Fenetre = new JFrame ("Calculatrice");
        JButton Bouton0 = new JButton("0");
        JButton Bouton1 = new JButton("1");
        JButton Bouton2 = new JButton("2");
        JButton Bouton3 = new JButton("3");
        JButton Bouton4 = new JButton("4");
        JButton Bouton5 = new JButton("5");
        JButton Bouton6 = new JButton("6");
        JButton Bouton7 = new JButton("7");
        JButton Bouton8 = new JButton("8");
        JButton Bouton9 = new JButton("9");
        JButton BoutonVirgule = new JButton(",");
        JButton BoutonSigne = new JButton("+/-");
        JButton BoutonAddition = new JButton("+");
        JButton BoutonSoustraction = new JButton("-");
        JButton BoutonMultiplication = new JButton("x");
        JButton BoutonDivision = new JButton("/");
        JButton BoutonPush = new JButton("PUSH");
        JButton BoutonSwap = new JButton("<->");

        JPanel Chiffres = new JPanel();
        Chiffres.setLayout(new GridLayout(4,3));
        Chiffres.add(Bouton7);
        Chiffres.add(Bouton8);
        Chiffres.add(Bouton9);
        Chiffres.add(Bouton4);
        Chiffres.add(Bouton5);
        Chiffres.add(Bouton6);
        Chiffres.add(Bouton1);
        Chiffres.add(Bouton2);
        Chiffres.add(Bouton3);
        Chiffres.add(BoutonVirgule);
        Chiffres.add(Bouton0);
        Chiffres.add(BoutonSigne);

        JPanel Cases = new JPanel();
        Cases.setLayout(new GridLayout(5,1));
        Cases.add(Ligne1);
        Cases.add(Ligne2);
        Cases.add(Ligne3);
        Cases.add(Ligne4);
        Cases.add(Ligne5);

        JPanel Operateurs = new JPanel();
        Operateurs.setLayout(new GridLayout(3,2));
        Operateurs.add(BoutonAddition);
        Operateurs.add(BoutonSoustraction);
        Operateurs.add(BoutonMultiplication);
        Operateurs.add(BoutonDivision);
        Operateurs.add(BoutonSwap);
        Operateurs.add(BoutonPush);

        JPanel Bas = new JPanel();
        Bas.add(Chiffres);
        Bas.add(Operateurs);

        Fenetre.getContentPane().add(Bas,BorderLayout.CENTER);
        Fenetre.getContentPane().add(Cases,BorderLayout.NORTH);

        Fenetre.pack();
        Fenetre.setVisible(true);
        Fenetre.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

事实上,我想混合这两种情况,因为 Operateurs 的位置在第二张图片中没有保留(Operateurs Panel 应该比 Chiffres Panel 小,如图 1 所示)

没有向 Bas 添加 GridLayout 的照片

将 GridLayout 添加到 Bas 的照片

Black=Cases Green=Bas Pink=Chiffres Cyan=Operateurs

非常感谢您的帮助!

我会替换这些:

Fenetre.getContentPane().add(Bas,BorderLayout.SOUTH);
Fenetre.getContentPane().add(Cases,BorderLayout.NORTH);

与:

Fenetre.setLayout(new BorderLayout());
Fenetre.add(Bas, BorderLayout.CENTER);
Fenetre.add(Cases, BorderLayout.NORTH);

不清楚您想要什么行为。试试这个:

    JPanel bas = new JPanel(new GridLayout(0, 2));//assign a layout manager 
    bas.add(chiffres);
    bas.add(operateurs);
    fenetre.getContentPane().add(bas,BorderLayout.SOUTH); //or CENTER