2016-10-29 8 views
1

다양한 스탠드 높이 모니터를 갖춘 많은 멀티 모니터 설정에서 모니터의 수직 위치를 소프트웨어로 조정하여 그래픽이 올바르게 정렬되도록 할 수 있습니다. 이 효과를 위해 Windows 마우스 좌표에 수직 변위가 추가됩니다. 다이어그램에서 보라색으로 표시 : enter image description here 사용자의 마우스가 모니터 상단에 도달했을 때를 알아야하는 프로그램을 작성 중입니다. MouseInfo.getPointerInfo().getLocation().y==0을 사용해 보았지만, 모니터 맨이 항상 0이 아니기 때문에 모니터가 소프트웨어로 옮겨 졌을 때 작동하지 않습니다.Java - 일부 멀티 모니터 설정의 수직 이동을 감지하는 방법?

여러 디스플레이에서이 오프셋을 식별하는 안정적이고 효율적인 방법이 있습니까?

+1

테스트하지 않았지만 문서에 따라 ['GraphicsConfiguration.getBounds()'] (https://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsConfiguration .html # getBounds--)는 찾고있는 것과 같습니다. ['GraphicsEnvironment.getLocalGraphicsEnvironment() .getScreenDevices()'] (https://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsEnvironment.html)로 모든 모니터를 가져올 수 있어야합니다. 및 해당 구성을 ['.getConfigurations()'] (https://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsDevice.html#getConfigurations--)로 구성 할 수 있지만 선택 방법은 idk 그 배열에서. – Siguza

+0

@Siguza 의견을 보내 주셔서 감사합니다. 제 질문에 완전히 답변했으며, 제가하려고했던 것을 성취 할 수있었습니다. 당신이 적절한 신용을 줄 수 있도록 대답 형식으로 쓰실 수 있습니까? –

+0

솔직하게 말해서, 내가 쓰고 싶은 답변의 정확성을 확인하기 위해 모니터 설정을 변경하는 느낌이 들지 않습니다. 이것이 내가 처음 대답을하지 않은 이유입니다. 그 정보로 자신 만의 답을 자유롭게 작성할 수 있지만, 기꺼이 도와 드리겠습니다. – Siguza

답변

1

@ Siguza의 의견 덕분에, 나는 성취하려는 것을 할 수있었습니다. MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()

Rectangle 또한 윈도우 내에서 모니터의 숫자 인덱스를 사용하여 각 모니터 찾을 수 있습니다 간단하게 말해서, 당신은 마우스가이 코드를 사용하여 켜져있는 모니터의 Rectangle 개체를 찾을 수 있습니다. 코드 GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration().getBounds() 메인 모니터 (인덱스 0), 다른 모니터는 모니터의 수직 변위가 Rectangle 객체 .y 속성 인 GraphicsDevice

의 인덱스를 변경함으로써 액세스 될 수 대한 Rectangle를 반환한다; 이 값은 모니터의 맨 위 좌표를 식별하는 데 사용될 수 있습니다. Siguza의 코멘트 @

:

이 그것을 테스트하지만, 문서에 따라하지 않았는 GraphicsConfiguration.getBounds()는 당신이 찾고있는 것 같은데. GraphicsEnvironment.getLocalGraphicsEnvironment(). getScreenD evices() 및 .getConfigurations()를 사용하여 모든 모니터를 가져올 수 있어야하지만 해당 배열에서 선택하는 방법은 분명합니다.