2010-02-11 4 views
1

2 개의 JPanel이 포함 된 매우 간단한 프레임을 사용하는 데 문제가있었습니다. 4 개의 JButton이 포함 된 Center JPanel의 레이아웃에 문제가 있습니다. 버튼에 대해 더 나은 크기를 설정하거나 GridLayout을 사용하는 JPanel에 대해 어떻게 더 좋은 크기를 설정할 수 있습니까? 그림에서 문제 :gridLayout을 사용하는 JPanel 최대 또는 기본 크기를 어떻게 설정합니까?

alt http://img42.imageshack.us/img42/4601/horrible.jpg !

여기 코드 :`JFrame window = new JFrame ("Horrible! LOL");

JTextField textField = new JTextField(""); 
    textField.setPreferredSize(new Dimension(200,20)); 
    JPanel textPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); 
    textPanel.add(textField); 
    window.add(textPanel, BorderLayout.NORTH); 

    JButton plus = new JButton("+"); 
    //plus.setPreferredSize(new Dimension(50,50)); nothing would change 
    JButton minus = new JButton("-"); 
    JButton per = new JButton("x"); 
    JButton divide = new JButton("/"); 
    JPanel prova = new JPanel(new GridLayout(2,2,10,10)); 
    Dimension d = new Dimension(20,20); 
    prova.setMaximumSize(d); // nothing changed! 

    prova.add(plus); 
    prova.add(minus); 
    prova.add(per); 
    prova.add(divide); 
    window.add(prova, BorderLayout.CENTER); 

    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    window.setSize(250,300); 
    window.setResizable(false); 
    window.setVisible(true);` 

좋은 해결책은 무엇입니까?

친절에 대해서

답변

2

불행히도 gridlayout은 바람직한 크기를 존중합니다. 당신은 그리드 레이아웃에 충실하려면하지만 여전히 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 : 다음

public static JComponent wrap(JComponent comp) 
    { 
     JPanel panel = new JPanel(); 
     panel.add(comp); 
     return panel; 
    } 

그리고를 대신 direclty 같은 추가 PROVA에 추가하는 : 테스트

  prova.add(wrap(plus)); 
      prova.add(wrap(minus)); 
      prova.add(wrap(per)); 
      prova.add(wrap(divide)); 

이 완벽한 작품! ! 더 좋은 방법이 있습니다.

+0

대단히 고맙습니다. 작동하지만 모든 버튼이 그리드 상단 가장자리에 붙어 있습니다. 내 문제 야? 내 결과에 대한 답변을 게시 할 것이므로 판단 할 수 있습니다. 더 나은 솔루션에 대한 링크 또는 저를 보여주십시오. 이런 종류의 일에 적합한 레이아웃은 무엇입니까? 종류 감사합니다. – soneangel

0

그게 저에게 일어납니다. 분명히 그리드의 위쪽 가장자리에 붙어 있습니다.

alt text http://img96.imageshack.us/img96/9431/stillnot.jpg

이 경우, 포장 방법에 I 버튼/완의 preferredSize가 설정할 수없는 경우에도

, 모든 버튼은 자신의 가장자리에있다. 다른 솔루션은 어떨까요? 어떻게 계산기 단추를 놓을까요? 친절하고 고맙습니다.

관련 문제