2017-10-25 11 views
1

저는 자바를 처음 사용하고 있습니다. 우리는 계산기를 역 폴란드어 표기법으로 코딩해야합니다. 우리가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); 

는 사실, 내가 원하는 창을 확장 할 때 크기가 2 JPanel의 Chiffres 및 Operateurs을 포함하는 JPanel의 바스가 변경되지 않기 때문에

우리는 윈도우의 표시에 문제를 가지고있다 Operateurs의 위치가 제 2 화상에 보존되지 않는다는 점에서 두 경우 사이의 혼합이 GridLayout과 않고

사진 지어져

첨가 (Operateurs 패널 그림 1과 같이 Chiffres 패널보다 작아야한다)

012 GridLayout과와

사진 Chiffres 시안 = Operateurs이

는 당신의 도움을 주셔서 감사합니다 바스

enter image description here

블랙 = 케이스 녹색 = 바스 핑크 = 추가!

+0

'BorderLayout.CENTER'에'Bas' (bas btw이어야 함)를 추가하면보십시오. 그렇지 않은 경우 contentman에 다른 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의 위치가 두 번째 그림에서 보존되지 않는다는 의미에서 두 경우의 혼합이 필요합니다 (Operateurs Panel은 Chiffres보다 작아야합니다. 패널, 포토 1로) [1] [GridLayout과 함께 사진 지어져 추가] GridLayout과없는 사진 지어져 추가] [2] [1] : HTTPS : //i.stack. imgur.com/rhRLx.png [2] : https://i.stack.imgur.com/sf49x.png 검정 = 사례 녹색 = 기본 분홍색 = Chiffres Cyan = 운영자 –

+0

질문에있는 내용을 반복 할 필요가 없습니다. . https://stackoverflow.com/help/someone-answers를 참조하십시오. 코드를 업데이트하고 질문이 변경된 경우 새로운 질문/게시물을 고려하십시오. – c0der