Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据窗口大小调整JPanel的大小_Java_Window_Jpanel_Calculator - Fatal编程技术网

Java 如何根据窗口大小调整JPanel的大小

Java 如何根据窗口大小调整JPanel的大小,java,window,jpanel,calculator,Java,Window,Jpanel,Calculator,我是java新手,作为一个项目,我们必须用java编写计算器 反向波兰符号 我们在窗口的显示中遇到了一个问题,因为当我们扩展窗口时,包括2个JPanels Chiffres和Operators的JPanel Bas的大小没有改变 JFrame Fenetre = new JFrame ("Calculatrice"); JButton Bouton0 = new JButton("0"); JButton Bouton1 = new JButton("1");

我是java新手,作为一个项目,我们必须用java编写计算器 反向波兰符号

我们在窗口的显示中遇到了一个问题,因为当我们扩展窗口时,包括2个JPanels Chiffres和Operators的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);
JFrame Fenetre=新的JFrame(“Calculatrice”);
JButton Bouton0=新JButton(“0”);
JButton Bouton1=新JButton(“1”);
JButton Bouton2=新JButton(“2”);
JButton Bouton3=新JButton(“3”);
JButton Bouton4=新JButton(“4”);
JButton Bouton5=新JButton(“5”);
JButton Bouton6=新JButton(“6”);
JButton Bouton7=新JButton(“7”);
JButton Bouton8=新JButton(“8”);
JButton Bouton9=新JButton(“9”);
JButton BoutonVirgule=新JButton(“,”);
JButton BoutonSigne=新JButton(“+/-”);
JButton BoutonAddition=新JButton(“+”);
JButton boutonsoutraction=新JButton(“-”);
JButton-bouton乘法=新JButton(“x”);
JButton BoutonDivision=新JButton(“/”);
JButton BoutonPush=新JButton(“PUSH”);
JButton BoutonSwap=新JButton(“”);
JPanel Chiffres=新的JPanel();
Chiffres.setLayout(新网格布局(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);
添加香葱(BoutonVirgule);
Chiffres.add(Bouton0);
Chiffres.add(BoutonSigne);
JPanel Cases=新的JPanel();
案例:setLayout(新的GridLayout(5,1));
例。添加(1);
例。添加(2);
案例。添加(3);
案例。添加(4);
案例。添加(5);
JPanel operators=新的JPanel();
操作员设置布局(新网格布局(3,2));
操作员添加(Bouton添加);
操作员添加(Boutonsoutraction);
运算符。加法(Bouton乘法);
新增运营商(Bouton分部);
操作员。添加(BoutonSwap);
操作员。添加(BoutonPush);
JPanel Bas=新的JPanel();
基础添加(Chiffres);
基础添加(操作员);
Fenetre.getContentPane().add(Bas,BorderLayout.CENTER);
Fenetre.getContentPane().add(Cases,BorderLayout.NORTH);
Fenetre.pack();
设置可见(真);
Fenetre.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

事实上,我想在这两种情况之间进行混合,因为操作员的位置在第二张图中并不保守(操作员面板应该比Chiffres面板小,如图1所示)

未将GridLayout添加到Bas的照片

将GridLayout添加到Bas的照片

黑色=外壳绿色=浅粉色=Chiffres青色=操作员

非常感谢你的帮助

我将替换这些:

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

我将替换这些:

Fenetre.getContentPane().add(Bas,BorderLayout.SOUTH);
Fenetre.getContentPane().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 

你想要什么样的行为还不清楚。试试这个:

    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 

查看是否将
Bas
(应为Bas btw)添加到
BorderLayout.CENTER
是您想要的。如果没有,请对contentpane应用不同的Layoutmanager。我尝试将Bas添加到BorderLayout.Center,但它只是更改了JPanel的位置,大小仍然被阻止。尝试将gridlayout=>添加到Bas面板,例如gridlayout(0,2);你最好用英文来命名。还要遵守Java命名约定。两者都使您的代码在此处更具可读性。为了获得更好的帮助帖子,我假设您希望看到这样的内容,例如将
Bas
(应该是Bas btw)添加到
BorderLayout。中心
就是您想要的。如果没有,请对contentpane应用不同的Layoutmanager。我尝试将Bas添加到BorderLayout.Center,但它只是更改了JPanel的位置,大小仍然被阻止。尝试将gridlayout=>添加到Bas面板,例如gridlayout(0,2);你最好用英文来命名。还要遵守Java命名约定。两者都使您的代码在此处更具可读性。为了更好地发布帮助信息,我假设您希望类似于事实上,我希望在这两种情况之间进行混合,因为在第二张图片中运算符的位置不受保护(运算符面板应比Chiffres面板小,如图1所示)[未将GridLayout添加到Bas中的图片][1][将网格布局添加到Bas的照片][2][1]:[2]黑色=格绿色=粉色= ChiffreCyn=操作员不需要重复问题。请看。如果你更新了代码,问题变了,考虑一个新问题/帖子。事实上,我想在这两种情况之间进行混合,在这一点上,操作人员的定位在第二张图片中不被保存。(操作员面板应小于Chiffres面板,如图1所示)[未将GridLayout添加到Bas的照片][1][将GridLayout添加到Bas的照片][2][1]:[2]黑色=案例绿色= BAS粉红= ChiffreCyA=操作人员不需要重复问题。请看。如果你更新了代码,问题变了,考虑一个新问题/帖子。