>  기사  >  JAVA:버튼을 누르면 테두리 창에서 개체 이동

JAVA:버튼을 누르면 테두리 창에서 개체 이동

PHPz
PHPz앞으로
2024-02-10 13:40:08488검색

PHP 편집기 Xinyi는 오늘 흥미로운 JAVA 프로그래밍 기술을 소개합니다. 즉, 버튼을 누를 때 테두리 창에서 개체를 이동하는 것입니다. 이 기술을 사용하면 사용자 인터페이스에 상호 작용 기능을 추가할 수 있어 사용자가 버튼을 클릭하여 개체를 이동할 수 있습니다. 이 함수의 구현 방법은 비교적 간단합니다. 버튼의 클릭 이벤트를 수신하고 이벤트 처리 방법에서 객체의 위치를 ​​업데이트하기만 하면 됩니다. 이러한 방식으로 우리는 사용자에게 더욱 생생하고 흥미로운 인터페이스 경험을 제공할 수 있습니다. 아래에서는 이 기술의 구현 과정을 자세히 소개하겠습니다.

질문 내용

창에 원을 만들고 화면 하단의 버튼을 사용하여 이동해야 하는 숙제를 하고 있어요. 창에 원과 버튼을 표시할 수 있지만 버튼을 눌러도 원이 움직이지 않습니다.

나의 주요 방법은 다음과 같습니다:

으아악

원을 이동하는 실제 방법은 다음과 같습니다.

으아악

ballcontrol 방법의 목적은 원을 움직이면 원이 창 경계를 넘어 확장되는지 확인하고 그렇지 않으면 이동하는 것입니다. 하지만 버튼을 눌러도 원은 움직이지 않습니다.

해결 방법

borderpane 是一种“布局窗格”,这意味着它将根据自己的算法布局其子节点。特别是,如果该节点可调整大小,并且在其最小、最大和首选大小指定的约束范围内,则 borderpane 将扩展 center 区域中的节点以填充整个区域,然后将其在该区域内居中。 circle 크기 조정이 불가능하므로 해당 영역의 중심에만 배치됩니다.

원의 centerxcentery 좌표를 수정하는 것은 여기서 도움이 되지 않습니다. 원의 레이아웃 경계는 약 20x20픽셀의 직사각형이 됩니다(반경이 10이므로 이는 원을 포함하는 가장 작은 직사각형입니다. 여기서 "대략"은 획이 약간의 추가 공간이 필요합니다.) 직사각형은 중심 반경에서 시작하여 중심+반경까지 확장되는 좌표계를 가지지만 테두리 창의 레이아웃 정책에 따라 중심 영역에 중심이 지정됩니다. 실제로 원 중심의 좌표는 변경되지만 이러한 좌표는 원 자체의 좌표계 내에 있을 뿐 테두리 창의 좌표계에는 없습니다.

한 가지 해결책은 레이아웃을 수행하지 않는 일반 에 원을 래핑하고 경계창 중앙에 을 배치하는 것입니다. 은 크기 조정이 가능하므로 경계창은 중앙 영역의 전체 크기로 크기를 조정합니다. 은 원의 레이아웃을 지정하지 않으므로 추가 레이아웃 없이 pane 中,并将 pane 放置在 borderpane 的中心。 pane 的大小是可调整的,因此 borderpane 会将其大小调整为中心区域的完整大小。 pane 不会对圆进行布局,因此它保留在 centerxcentery에서 정의한 좌표에 유지됩니다. (실제로 원의 좌표계를 창의 좌표계와 동일하게 만듭니다.) 이것이 아래 코드에서 사용하는 솔루션입니다.

또 다른 해결책은 원의 translatextranslatey 속성을 조작하는 것입니다. 이러한 변환은 레이아웃 후에 적용됩니다. 그러나 이 솔루션을 사용하면 원이 컨테이너 경계를 벗어나는 것을 방지하는 것이 더욱 복잡해집니다. (아래 코드에서는 이 솔루션을 표시하지 않습니다.)

자세한 내용은 레이아웃 문서를 참조하세요.

이 작업을 수행하기 위한 수정 사항은 다음과 같습니다. 창 크기가 조정되더라도 여전히 작동하도록 경계 계산 방법도 수정했습니다.

으아악

위 내용은 JAVA:버튼을 누르면 테두리 창에서 개체 이동의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제