2012-11-29 3 views
0

버튼 클릭으로 최대화되는 Jpanel 있습니다. 치수를 스크린 크기로 설정 한 다음 setLocationRelativeTo (null)을 호출하여이 작업을 수행합니다. 기본 모니터에 패널이 있으면 정상적으로 작동하지만 패널이 다른 모니터에있을 때 버튼을 클릭하면 항상 패널이 기본 모니터로 이동합니다. 현재 사용중인 패널 모니터를 가져 와서 새 위치에 사용하는 방법이 있습니까? 미리 감사드립니다.java awt setLocationRelativeTo 여러 모니터 p

+1

http://stackoverflow.com/questions/10888131/determine-windows-display-number-and-or-layout-via-java – Aubin

+0

안녕하세요,이 링크를 보았다 는, 내 경우가있다 버튼 클릭으로 창을 기본 모니터로 이동 했으므로 Panel이 기본 모니터에 이미있는 경우에는 아무런 문제가 없습니다. 좀 더 명확히 말하면, 현재 패널이있는 모니터를 식별하고 싶을 때 사용자가 모니터간에 모니터를 옮길 수 있습니다. 윈도우가 현재 어떤 모니터에 있는지 찾고 새 위치를 동일하게 설정하려고합니다. 어떻게 GraphicsConfiguration을 사용하여이 작업을 수행 할 수 있습니까? 나는 Javadocs에서 그것을 이해할 수 없었다. – vumaasha

+0

http://tackoverflow.com/questions/1248386/how-do-i-determine-which-monitor-a-swing-mouse-event-occurs-in 위의 스레드가 도움이되었습니다. – user111093

답변

0

나는 집이 한 화면 밖에 없기 때문에 월요일에 업무에 복귀 할 예정이지만 다음 코드는 Windows 7 64 비트에서 "\ Display0"로 JFrame의 제목을 설정합니다. 이 문자열은 스크린의 ID이고 두 번째 스크린은 "\ Display1"이라고 가정합니다. GraphicsDevice.getIDstring()

GraphicsConfiguration.getDevice()

  • Component.getGraphicsConfiguration()
    • 나는 그것을 평가하는 멀티 스크린 PC에서이 응용 프로그램을 실행하는 것이 좋습니다.

      import java.awt.BorderLayout; 
      import java.awt.Dimension; 
      import java.awt.event.ActionEvent; 
      import java.awt.event.ActionListener; 
      
      import javax.swing.JButton; 
      import javax.swing.JFrame; 
      import javax.swing.SwingUtilities; 
      
      public class Frm 
          extends 
           JFrame 
          implements 
           ActionListener 
      { 
          Frm() 
          { 
           setDefaultCloseOperation(EXIT_ON_CLOSE); 
           setPreferredSize(new Dimension(640, 480)); 
           setLayout(new BorderLayout()); 
           JButton getScreenBtn = new JButton("Get Screen ID"); 
           add(getScreenBtn, BorderLayout.CENTER); 
           getScreenBtn.addActionListener(this); 
           pack(); 
           setLocationRelativeTo(null); 
           setVisible(true); 
          } 
      
          @Override 
          public void actionPerformed(ActionEvent e) { 
           setTitle(getGraphicsConfiguration().getDevice().getIDstring()); 
          } 
      
          public static void main(String[] args) { 
           SwingUtilities.invokeLater(new Runnable() { 
           @Override public void run() { new Frm(); }}); 
          } 
      }