2017-10-25 3 views
1

ich Java neu bin und als Projekt haben wir einen Rechner in umgekehrte polnische Notation codieren.Wie die Größe eines JPanel mit der Größe des Fensters anzupassen

Wir haben ein Problem in der Anzeige des Fensters bekommen, weil die Größe der JPanel Bas, die das 2 JPanels Chiffres und Opérateurs enthält nicht ändern, wenn wir das Fenster

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

In der Tat erweitern, ich will eine Mischung zwischen den beiden Fällen, in dem Sinne, dass die Positionierung von Opérateurs nicht im zweiten Bild konserviert (Opérateurs Gremium sollte als Chiffres-Panel kleiner sein, wie auf dem Bild 1)

Foto ohne Gridlayout zu Bas hinzugefügt

enter image description here

Foto mit dem Gridlayout hinzugefügt Bas

enter image description here

Schwarz = Fälle Grün = Bas Rosa = Chiffres Cyan = Opérateurs

Ihnen sehr für Ihre Hilfe danken!

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

mit:

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

Sehen Sie, wenn Sie hinzufügen 'Bas' (sollte Bas BWW sein) zu' BorderLayout.CENTER' ist was Sie wollen. Wenn nicht, wenden Sie einen anderen Layoutmanager auf den Inhalt an. – c0der

+0

Ich habe versucht, Bas zu BorderLayout.Center hinzuzufügen, aber es ändert nur die Position des JPanel, die Größe ist immer noch blockiert. –

+1

Versuchen Sie, zum Bas-Panel auch ein Rasterlayout => z. GridLayout (0,2); – r3dst0rm

Antwort

0

Ich würde diese ersetzen. Versuchen Sie dies:

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

Es ist nicht klar, welches Verhalten Sie wollen

+0

In der Tat, ich habe eine Mischung zwischen beiden Fällen im Sinne mag, dass die Positionierung von Opérateurs nicht im zweiten Bild (Opérateurs Gremium sollte kleiner sein als Chiffres seine konserviert ist Panel, wie auf dem Bild 1) [Foto ohne Gridlayout hinzugefügt Bas] [1] [Foto mit dem Gridlayout hinzugefügt Bas] [2] [1]: https: //i.stack. imgur.com/rhRLx.png [2]: https://i.stack.imgur.com/sf49x.png Schwarz = Fälle Grün = Bas Rosa = Chiffres Cyan = Operateurs –

+0

Keine Notwendigkeit zu wiederholen, was in der Frage ist . Bitte siehe https://stackoverflow.com/help/someone-answers. Wenn Sie den Code aktualisiert und die Fragen geändert haben, sollten Sie eine neue Frage/einen neuen Beitrag in Erwägung ziehen. – c0der

Verwandte Themen