2011-11-01 3 views
2

JLabel (또는 다른 모든 구성 요소)에서 MouseEvent mouseClicked를 트리거해야합니다. 어떻게해야합니까?Robot 클래스를 사용하여 Component에서 click 이벤트를 트리거하는 방법은 무엇입니까?

try { 
    Robot r=new Robot(); 
    r.mouseMove(jl.gettX(), jl.getY());//jl is the JLabel 
    r.mousePress(InputEvent.BUTTON1_MASK); 
    r.mouseRelease(InputEvent.BUTTON1_MASK); 
} catch (AWTException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

하지만 getX()getY() 구성 요소의 부모의 x,y 위치를 반환하는 :

나는 다음과 같이 로봇 클래스를 사용하여 시도했다. Robot.mousePress()을 트리거 할 수 있도록 구성 요소의 절대 위치를 얻으려면 어떻게해야합니까? 특정 구성 요소에서 이벤트를 트리거하는 다른 방법이 있습니까?

+0

왜 부정 투표입니까 ?? 나는 이상하게 여긴다? – sasidhar

답변

3

대신 Component.getLocationOnScreen()을 사용해야합니다. 이 메서드는 절대 좌표를 반환합니다.

+0

@mKorbel'getLocationOnScreen()'이 정상적으로 작동했습니다. 대신 왜'getLocation()'입니까? – sasidhar

+1

나는 똑같은 것을 궁금해했다. 'gLOS'는 '화면상의 위치'를 얻기 위해 사용하는 올바른 것입니다. @mKorbel 당신이 알아야 할 이유가 있다면, 왜 편집할까요? –

+0

hmmm OP의 JLabel을 쓰려는데 왜 JLabel을 Component로 캐스팅했으나 합의했습니다. – mKorbel

1

나는 당신이 그것은 일반적으로 테스트 Swing 구성 요소에 사용되는이 dialog.button("ok").click();

과 같은 코드를 작성할 수 FEST-Swing를 사용하는 것이 좋습니다 것이지만, 실제로는 너무 다른 시간에 사용할 수 있습니다. 페스트로 쉽게 찾을 수 있도록 구성 요소의 이름을 설정하는 것이 유용 할 수 있습니다.

관련 문제