2012-03-28 7 views
0

나는 메인 패널에 JDesktopPane을 추가하는 자바 애플리케이션을 개발 중입니다. 사용자가 JButton을 클릭하면 JInternalFrame이 표시됩니다. 내 문제는 내가 Mac OSx 모양과 느낌을 사용하는 경우, 은 정확한 크기로 JInternalFrame을 표시하고, 다른 모양과 느낌을 사용하면 JInternalFrame을 화면 크기로 표시합니다.JDesktopPane 크기를 설정하는 방법

public void addInDesktop(JInternalFrame frame){ 
     frame.setVisible(true); 
     try { 
         jDesktopPane1.setSize(frame.getSize()); 
         jDesktopPane1.setPreferredSize((frame.getSize())); 
         System.out.println(frame.getSize().toString()); 
         System.out.println(jDesktopPane1.getSize().toString()); 
      jDesktopPane1.add(frame); 
      frame.moveToFront(); 
      frame.setSelected(true); 
     } catch (PropertyVetoException e) { 
      e.printStackTrace(); 
     } 
    } 

System.out.println이 JDesktopPane에와 JInternalFrame의의 치수가 동일하다는 것을 저에게 말한다, 그러나 왜 : JButton(s)

jDesktopPane1 = new JDesktopPane(); 
setContentPane(jDesktopPane1); 

사용자가 클릭 할 때 :

주요 JPanel에서이 내가하는 일입니다 전체 화면 크기로 JInternalFrame을 보여 줍니까?

답변

2

jDesktopPane1.add (frame) 다음에 크기를 인쇄하면 아마 크기가 변경됩니다. 데스크탑 패널을 내부 프레임의 크기로 설정하는 것은 좋지 않은 방법입니다. 데스크톱 패널이있는 부모 JFrame의 클라이언트 영역 크기를 유지해야한다고 생각했을 것입니다 (setContentPane()을 호출하는 프레임 jDesktopPane1)), 내부 프레임을 자연스럽게 어딘가에 놓습니다.

무엇이 일지도 모릅니다. 동일한 크기로 창과 내부를 설정하면 모양과 느낌이 '최대화'를 의미한다고 가정 할 수 있습니다. 따라서 데스크톱 창 크기를 올바르게 해석하면 이상한 일을합니다. 내부 프레임.

바탕 화면 창에서 하지 호출에는 setSize()을/setPreferredSize() 시도하고 그 다음 L & Fs를 일관되게 작동되는지 확인합니다. 아마도 기본 크기가 원하는 것이 아닌 경우 내부 프레임을 사용하여 최선의 작업을 파악할 수 있습니다. 당신은 당신이 넣어가는 어디 JFrame의 한 폭 높은 크기를 설정하려면

0

. 당신은 당신이 그 경계를 호출하는 JFrame의 의미 this하여

variable_desktopPane.setBounds(this.getBounds()); 

를 사용할 수 있습니다.

이 글이 도움이되기를 바랍니다.

관련 문제