2011-02-23 4 views

답변

32
 

frame.getContentPane().getSize(); 
 
+3

고마워요! frame.pack(); 이 명령 앞에 있어야합니다. 그렇지 않으면 (0; 0)을 반환합니다. – rzaaeeff

8
frame.pack(); 
System.out.println("frame width : "+getWidth()); 
System.out.println("frame height: "+getHeight()); 
System.out.println("content pane width : "+getContentPane().getWidth()); 
System.out.println("content pane height: "+getContentPane().getHeight()); 
System.out.println("width of left + right borders: "+(getWidth()-getContentPane().getWidth())); 
System.out.println("height of top + bottom borders: "+(getHeight()-getContentPane().getHeight())); 
2

frame.getContentPane().getSize(); 

하지만 콘텐츠를 추가하지 않은 경우 아직 잘 작동합니다. 필자의 경우에는 내용을 추가하기 전에 JFrame의 내부 크기를 계산하기 위해 내용을 적절하게 나눌 수있었습니다. 여기에 내가 생각해 낸 것이있다.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 

pack(); // Need this, otherwise insets() show as 0. 
int scrW = (int)screenSize.getWidth(); 
int scrH = (int)screenSize.getHeight(); 
    int innerW = scrW - getInsets().left - getInsets().right; 
    int innerH = scrH - getInsets().top - getInsets().bottom; 

    // Need to setSize(), otherwise pack() will collapse the empty JFrame 
    setSize(scrW, scrH); 
관련 문제