Существует группа из 10 JPanels, которые помещаются в GridLayout. Теперь я хочу перетащить один JPanel (например, панель 1) и поместить его поверх другого JPanel (например, panel2) и переместить панель2 влево или вправо и поместить панель1 в положение panel2. Я могу перетащить JPanel с помощью опции перетаскивания, но я не могу отбросить его в нужную позицию. Мне нужна помощь в перемещении панелей в месте падения. Извините, если мой вопрос непонятен. Надеюсь ты понимаешь. Спасибо заранее.Перетаскивание и перемещение JPanels в группе JPanels
ответ
Вы могли бы попробовать это, но, как я сказал, что, вероятно, лучший способ:
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() не ноль. Я не тестировал это, но он должен работать!
Что-то похожее на это, но перемещение SWT Control(s)
.
Мои управления были рядом друг с другом (без пробела между ними), поэтому, когда я уронить Control1, он будет знать, на каком Control2 это при падении (с control2.getBounds().contains(dropPoint)
).
После этого я Сопоставьте dropPoint
к Control2, и выяснить, если dropPoint
находится слева или справа от Control2 «s ширины. Затем я просто перемещаю control1 с moveAbove(control2)
или moveBelow(control2)
.
Наконец, я вызываю container.layout()
(container является родительским элементом элементов управления), чтобы уведомить своих детей о том, что макет изменился, и дети перемещаются.
- 1. Перемещение между JPanels?
- 2. Перемещение JPanels использованием TimerTask
- 3. Несколько jPanels в jFrame и переключение jPanels
- 4. Swap JPanels в массиве JPanels
- 5. Получение JPanels внутри других JPanels влево выравнивание
- 6. Организация JPanels и Макеты
- 7. JPanels и GridLayouts
- 8. JFrame и JPanels
- 9. change Jpanels
- 10. Переключение JPanels
- 11. Позиционирование JPanels в BorderLayout
- 12. перекрытие JPanels в GUI
- 13. Могу ли я изменить положение JPanels в массиве JPanels?
- 14. Добавление JPanels в JFrame?
- 15. Несколько jpanels в jframe
- 16. Как переставить выложенные JPanels в JPanel через перетаскивание
- 17. Java - Переключение между JPanels со своими JPanels и изменение размера этих внутренних JPanels и компонентов в зависимости от размера JFrame
- 18. Один JFrame и два JPanels
- 19. Перемещение и изменение размера объекта JPanels внутри JFrame
- 20. Java Jpanels и Gradient Backgrounds
- 21. добавить jPanels, выбрав jCheckBoxes
- 22. Сроки отображения JPanels
- 23. Java Layer JPanels
- 24. Уменьшить разрыв между JPanels
- 25. Штабелирование JPanels поверх других
- 26. Java LayoutManagers с JPanels
- 27. Связь между JPanels
- 28. Добавление JPanels через петлю
- 29. Как создать вектор JPanels?
- 30. Связь между JPanels
Вы можете проверить наличие столкновений между перетаскиваемой панелью и другими, а затем переключить позиции при столкновении ... но, вероятно, лучший способ сделать это. – Fernando
Фернандо: Есть ли у нас метод проверки на столкновение? Или есть другой способ? – Rookie86
Да, panel.getBounds() возвращает объект * Rectangle *, который вы можете использовать для вызова rectangle.insersects (anotherRectangle). – Fernando