2012-05-21 1 views
2

Java를 사용하여 컴퓨터 화면 중앙에 메인 애플리케이션 JFrame을 중심으로 배치하는 코드를 작성하려고합니다. 이렇게하려면 아래 코드를 사용합니다.이 과정은 두 부분으로 나뉘며, 이는 ScreenHeight 및 ScreenWidth를 클래스의 다른 위치에서 크기 조정 용도로 사용하기 때문에 클래스의 속성입니다.디스플레이 JFrame 듀얼 스크린을 사용할 때 메인 모니터 중앙에 놓임

이 코드는 내 랩톱 및 기타 단일 화면 시스템에서 완벽하게 작동하지만 듀얼 모니터 인 주 컴퓨터에서 대화 상자의 절반을 차지하는 작업 공간의 중앙에 화면을 배치합니다 (작을 수 있음).)를 각 화면에 표시합니다. 메소드에 있으므로 대화 상자의 크기가 프로그램에 의해 변경 될 때마다 호출 할 수 있습니다.

부울 너비 값을 사용하여 화면을 세로 축의 같은 위치에 유지하면서 수평으로 가운데 놓습니다.

// Finds the size of the screen 
private void find_ScreenSize() { 
    Toolkit toolkit = Toolkit.getDefaultToolkit(); 
    Dimension dim = toolkit.getScreenSize(); 
    ScreenHeight = dim.height; 
    ScreenWidth = dim.width; 
} 

// Centres the dialogue box within the screen 
private void centre_Frame(JFrame Frame, boolean Width) { 
    find_ScreenSize(); 

    if (!Width) { // if you are not justifying on the X axis 
     Frame.setLocation(Frame.getLocationOnScreen().x, 
       ((ScreenWidth/2) - (Frame.getWidth()/2))); 
    } else { 
     Frame.setLocation(((ScreenWidth/2) - (Frame.getWidth()/2)), 
       ((ScreenHeight/2) - (Frame.getHeight()/2))); 
    } 
} 

모든 멀티 스크린 컴퓨터에서 주/첫 번째 화면 가운데에 대화 상자를 가운데에 배치하고 싶습니다. 내 응용 프로그램의 대화 상자는 위치를 제어하지 않고 JOptionPane과 파일 열기 및 저장 대화 상자와 같은 모든 작업을 완벽하게 처리합니다.

Linux에서 개발 중이지만 Linux 및 MS 플랫폼에서 사용할 수 있습니다.

이 문제를 검색하면 위의 예가 많이 나오지만 원하는 것을 수행하는 방법을 알려주는 것이 아무것도 없으므로 도움을 얻을 수 있습니다.

미리 도움을 청하십시오.

답변

3
frame.setLocationRelativeTo(null); 

은 (doc)이어야합니다. 적어도 그것은 내 멀티 모니터 설정에서 않습니다. 응용 프로그램이 보조 모니터에서 실행 되더라도 창은 항상 주 모니터의 중앙에 표시됩니다.

GraphicsEnvironment.getCenterPoint을 사용하면 스스로 계산하는 대신 중심점을 찾을 수 있습니다.

특정 모니터에 표시 할 경우

, 내가 잘 일한 frame.setLocationRelativeTo (널)를 사용, 그 정보를 Show JFrame in a specific screen in dual monitor configuration

+0

감사를 참조하십시오. 나중에 특정 화면에 가운데 놓기 위해 제안한 다른 요소를 사용하여 살펴볼 수 있습니다. – user1408605

관련 문제