2012-08-27 7 views
2

JLabels에서 드래그 앤 스냅 타입을 구현하려고합니다. 기본적으로 JPanel은 화면 주위에 지정된 상자에있는 JLabel로 시작됩니다 (모든 JLabel과 Box는 같은 크기 임). 그런 다음 사용자가 JLabel을 상자로 드래그하여 상자에 "넣을"수있게하고 싶습니다. 즉, 마우스가 상자에 접근하면 프로그램은 JLabel을 해당 상자에 넣는 것을 알고 있습니다.Java에서 JLabels를 드래그 앤 스냅

나는 마우스 수신기와 마우스를 드래그하여 많은 작업을 수행 할 수 있었고 (이미이 작업을 시작했으며 너무 예쁘지 않다.) 그러나 웹에 누군가가 알고있는 것이 있거나 자바에 내장되어있는 어떤 것이 나를 돕는 지 궁금해하고있었습니다.

참고 :이 내용은 드래그 앤 드롭에 대한 질문이 아닙니다. 드래그 앤 드롭 패키지로

+0

http://stackoverflow.com/questions/874360/swing-creating-a-draggable-component이 게시물을 읽으십시오. 그것은 당신이 말하는 것에 대한 하나의 구현 접근법을 보여줍니다. 스냅은 드래그와 다르지 않고 구성 요소가있는 위치를 기반으로하는 일련의 매개 변수를 갖습니다. 단계를 사용하는 JQuery 스냅과 같은 것을 구현하려고하고 있다고 가정합니다. 알고리즘은 지나치게 복잡하지는 않을 것이지만 "참고 : 이것은 물방울과 물방울에 관한 질문이 아닙니다." 너 어떤 친구도 뺏을 수 없어. Swing이 아니라 awt를보세요. MadProgrammer는 당신에게 좋은 힌트를주었습니다. –

답변

1

Drag'n'Drop 요구 사항의 같은 전문 영역입니다.

Swing 구성 요소에 대한 TransferHandler API의 구현을 살펴보십시오. 내장 된 구성 요소에 대해 실제로 잘 작동하지만 사용자 지정 구성 요소에서 작동하도록 일부 작업이 필요하지만 확장이 불가능합니다 (사용자 정의 커서 & 드래그 그래픽을보고 있습니다).

문제는 모든 툴킷/API/프레임 워크가 타겟 디자인의 제약 내에서만 작동한다는 것입니다.

DnD API의 다양한 요소를 분리하고 청취자, 이벤트 처리 등을 등록함으로써 솔루션의 요구 사항에 좀 더 집중할 수 있지만 " , 그것은 대략 당신이 얻을지도 모르는 정도입니다.

예를 들어 필자가 작성한 API가 사용자의 요구를 충족시키지 못할 수도 있습니다. 이는 내가 다루고있는 일련의 특정 문제를 해결하기 위해 작성한 것입니다.

그냥 MHO

+0

이것은 끌어서 놓기가 아닙니다. 이것은 드래그 앤 스냅입니다. – CodeGuy

+0

@ CodeGuy, 근본적인 차이점은 없습니다. 하나의 단순함은 놓을 때 대상을 사용하고 다른 좌표는 애니메이션을 실행하는 좌표를 기반으로 사용합니다. 여기 남자가 당신의 질문에 대답했습니다. –

+0

네, 큰 차이점이 있습니다. JTable을 드래그 앤 드롭하는 것과 JList를 드래그 앤 드롭하는 것을 비교 해보자. JTable을 사용하면, 그 오브젝트를 물리 칠 수있다. 이것은 내가 원했던 것이지만 JPanel의 정의 된 스냅 위치에서 JLabels로 원한다. – CodeGuy

0
+0

nudge, nudge, Java 7 API에 링크하려는 경우가 있습니다. 그렇지 않으면 달리 투표 할 수 있습니다.) – MadProgrammer

+0

편집 됨, 감사합니다. 나는 Bing'd java.awt.dnd 때 첫 번째 결과로 갔다. 그것이 잘못된 버전임을 깨닫지 못했습니다. – mrranstrom

+0

말하자면 "틀린"것은 아니지만 OP가 여전히 Java 이전 버전을 사용하는 경우에도 향후 비 호환성 문제가 있음을 알게 될 것입니다. – MadProgrammer

0

자바 "스냅 - 투 - 그리드"예를 검색해보세요 다음 GUI 컴포넌트를 페어링 따라 수정?