GridLayout에 배치 된 10 개의 JPanel 그룹이 있습니다. 이제 하나의 JPanel (예 : panel1)을 드래그하여 다른 JPanel (예 : panel2) 위에 배치하고 panel2를 왼쪽 또는 오른쪽으로 이동하고 panel1을 panel2 위치에 배치하려고합니다. 드래그 옵션을 사용하여 JPanel을 드래그 할 수 있지만 필요한 위치에 드롭 할 수 없습니다. 드롭 위치에 패널을 옮길 때 도움이 필요합니다. 죄송합니다. 제 질문이 명확하지 않은 경우. 당신이 이해하기를 바랍니다. 미리 감사드립니다. JPanels 그룹에서 JPanels 드래그 및 이동
1
A
답변
0
이 작업을 시도하지만, 내가 말했듯이, 아마 더 좋은 방법이 있었다 : 당신의 드래그 리스너에서 다음
public JPanel getPanelColliding(JPanel dragPanel, JPanel[] panels)
{
Rectangle rDrag = dragPanel.getBounds();
for (JPanel panel : panels){
if (panel == dragPanel) continue;
Rectangle r = panel.getBounds();
if (r.insersects(rDrag))
return r;
}
return null;
}
getPanelColliding은() 않은 경우 당신이 그것을 스왑 패널 위치를 호출 할 수 있습니다 없는. 나는 이것을 테스트하지 않았지만 효과가있다!
0
비슷한 것이지만, 주위에 SWT Control(s)
이동하십시오.
내 컨트롤 (그들 사이에 공간이) 서로 옆에 있었다, 그래서 나는 제어 1을 삭제할 때, 그것은하는 control2 그것 (control2.getBounds().contains(dropPoint)
로) 감소되는 것을 알고 있습니다.
그 후, 나는 매핑 dropPoint
control2에, 그리고 dropPoint
왼쪽 또는 폭의 control2의 오른쪽에 있는지 찾을 수 있습니다. 그런 다음 컨트롤 1을 moveAbove(control2)
또는 moveBelow(control2)
으로 간단하게 이동합니다.
마지막으로 container.layout()
(컨테이너은 컨트롤의 부모입니다)에서 레이아웃이 변경되었다는 것을 자식에게 알리고 자식이 이동한다고 알립니다.
관련 문제
- 1. JPanels, Listeners and Threads
- 2. JPanels 사이를 탐색 하시겠습니까?
- 3. JFrame에 다중 JPanels 추가
- 4. JFrame의 두 JPanels
- 5. JPanels 사이의 줄이기
- 6. JFrames and JPanels
- 7. JSplitPane의 JPanels 크기 조정
- 8. 카드 레이아웃의 여러 Jpanels
- 9. 많은 JPanels 인쇄하기
- 10. JPanels 안에 JButton 포맷하기
- 11. JFame에서 병렬로 보이는 JPanels
- 12. BorderLayout에 JPanels 배치
- 13. 키보드로 JPanels 바꾸기
- 14. 자바 스윙 복수 jpanels
- 15. jFrame에 여러 jPanels 추가
- 16. Swing의 예쁜 JPanels
- 17. JFrame에서 여러 JPanels 편집
- 18. JPanels 간 전환
- 19. jpanels 다시 인스턴스화
- 20. JPanels 사이의 통신
- 21. JFrame의 다중 JPanels
- 22. Java Miglayout 포장 JPanels
- 23. 여러 클릭 가능한 JPanels
- 24. JPanels 오버랩시 깜박임
- 25. 자바 레이어 JPanels
- 26. JFrame 내부의 JPanels 객체 이동 및 크기 조정
- 27. CENTER 이외의 영역에 JPanels 추가
- 28. JPanels 업데이트 및 JLabels 표시 유지
- 29. JPanels, JFrames 및 Windows, 오 마이!
- 30. java 다른 클래스의 jpanels 추가하기
드래그 한 패널과 다른 패널 사이의 충돌을 확인한 다음 충돌이 발생할 때 위치를 전환 할 수 있지만이를 수행하는 데 더 좋은 방법이 있습니다. – Fernando
Fernando : 충돌을 확인하는 방법이 있습니까? 아니면 다른 방법이 있습니까? – Rookie86
예, panel.getBounds()는 rectangle.inserects (anotherRectangle)를 호출하는 데 사용할 수있는 * Rectangle * 객체를 반환합니다. – Fernando