내부에 버튼이있는 JPanel이 많이 있습니다. 화면의 마우스 위치에서 JButton을 감지하고 싶습니다.
마우스 위치를
MouseInfo.getPointerInfo().getLocation();
이 위치에 JButton이 있는지 확인 하고이 버튼을 가져옵니다.
예:
버튼 왼쪽 모서리는 화면 위치 (50,50), 버튼 크기는 너비 = 100, 높이 = 50, 마우스는 화면 위치 (70,70)에 있습니다.
이 위치에 JButton이 있는지 어떻게 감지 할 수 있습니까?
내가 사용하는 방법이 있지만 최고는 아니지만 작동하고 컨테이너 (JPanel)에 리스너를 추가하고 이동할 때 커서의 위치를 확인하고 커서가 버튼의 한계 내로 들어올 때 컨테이너에서 색인을 확인하고 ID를 제공합니다.
List<JButton> btns = new ArrayList<>(); //store all the buttons here for 1 container
//Inside your MouseMove Event of your Panel (only 1)//
checkPos(evt.x, evt.y);
//////////////////////////////
private void checkPos(int mousePosX, int mousePosY){
boolean minX;
boolean minY;
boolean maxX;
boolean maxY;
for (int i = 0; i < btns.size(); i++) {
minX = mousePosX >= btns.get(i).getLocation().x;
minY = mousePosY >= btns.get(i).getLocation().y;
maxX = mousePosX <= (btns.get(i).getWidth()+ btns.get(i).getLocation().x);
maxY = mousePosY <= (btns.get(i).getHeight()+ btns.get(i).getLocation().y);
if (minX && minY && maxX && maxY){ //check if JButton exist on this location
System.out.println(btns.get(i)); //return the JButton, Can be worked out for more precision
//OR
System.out.println("There's a JButton at this Location : " + mousePosX + " - " + mousePosY + " of the screen !");
}
}
}
질문과 행운을 빕니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다