2017-10-25 1 views
1

私はJavaを初めて、プロジェクトとして、計算機を 逆ポリッシュ表記でコードする必要があります。ウィンドウの大きさに合わせてJPanelのサイズを調整する方法

2つのJPanel ChiffresとOperateursが含まサイズのJPanelバは、私たちが実際に窓

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の位置決めが第2画像に保存されていないという意味で、両方のケースの間の混合物のGridLayout無し

写真バ

に添加(Operateursパネルは、画像1上のように、Chiffresパネルよりも小さくなければなりません)

012 GridLayoutので

写真はグリーンバ

enter image description here

ブラック=ケースを追加=バピンク= Chiffresシアン= Operateurs

はあなたの助けをありがとうございました!

+0

'BorderLayout.CENTER'はあなたが望むものであるに' Bas'を(ところでBASでなければなりません)を追加するかどうかを確認してください。そうでない場合は、ContentPaneに別のLayoutManagerを適用します。 – c0der

+0

BorderLayout.CenterにBasを追加しようとしましたが、JPanelの位置が変わるだけですが、サイズはまだブロックされています。 –

+1

Baslayパネルにもgridlayout =>を追加しようとします。 GridLayout(0,2); – r3dst0rm

答えて

0

私は、これらに代わる:

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); 
0

あなたが望むものの行動は明らかではありません。これを試してみてください:

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 
+0

を参照してください実際には、Operateursの配置が2番目の画像で保存されないという意味で、両方のケースのミックスが必要です(Operateurs PanelはChiffresより小さくする必要があります画像1上のパネル) [グリッドレイアウトすることなく写真バに追加] [1] [グリッドレイアウトと写真バに追加] [2] [1]:HTTPS://i.stack。 imgur.com/rhRLx.png [2]:https://i.stack.imgur.com/sf49x.png ブラック=ケースグリーン=ベースピンク=シフルシアン=オペレータ –

+0

問題の内容を繰り返す必要はありません。 https://stackoverflow.com/help/someone-answersを参照してください。コードを更新して質問が変更された場合は、新しい質問/投稿を検討してください。 – c0der

関連する問題