2012-08-27 2 views
2

Я пытаюсь реализовать объект перетаскивания и привязки с помощью JLabels. В принципе, JPanel запускается с JLabels, которые находятся в определенных ячейках вокруг экрана (все JLabels и Box имеют одинаковый размер). Затем я хотел бы, чтобы пользователь мог перетащить JLabel в ящик и «привязать» его к ящику; смысл, когда их мышь приближается к ящику, программа знает, чтобы привязать этот JLabel к этому ящику.Перетаскивание и привязка JLabels в Java

Я мог бы сделать это утомительно с прослушивателем мыши и мышью, перетащил и сделал много рендеринга (я уже начал это, и это не слишком красиво). Но мне было интересно, есть ли что-то в Интернете, о котором кто-либо знает, или что-то, что было встроено в java, что помогло бы мне.

ПРИМЕЧАНИЕ: ЭТО НЕ ВОПРОС О ДРАКЕ И УБЫТКЕ.

+0

http://stackoverflow.com/questions/874360/swing-creating-a-draggable-component прочитайте это сообщение. Он показывает один подход к реализации, о чем вы говорите. Защелка не отличается от перетаскивания, она просто имеет набор параметров, основанных на том, где находится компонент. Я предполагаю, что вы пытаетесь реализовать что-то вроде JQuery, которое использует шаги. Алгоритм не будет слишком сложным, но «ПРИМЕЧАНИЕ: ЭТО НЕ ВОПРОС О ДРАКЕ И УБЫТКЕ». не выигрывает у вас друзей. Посмотрите на awt, а не на Swing. MadProgrammer дал вам несколько замечаний. –

ответ

1

Drag'n'Drop такая специальность область требований.

Ознакомьтесь с реализацией API TransferHandler для компонентов Swing. Хорошо работает для встроенных компонентов, требует некоторой работы, чтобы работать в пользовательских компонентах, но в противном случае невозможно расширить (я смотрю на пользовательский курсор & drag graphics).

Проблема в том, что любой инструментарий/API/framework будет работать только в рамках ограничений его целевого дизайна.

Вы можете сделать жизнь «немного» проще, разделив различные элементы API DnD, зарегистрировав слушателей, обработку событий и т. Д., Чтобы вы могли лучше ориентироваться на требованиях решения, но в данный момент , это примерно так, как вы могли бы получить.

Например, API, который я написал, вероятно, не удовлетворит ваши потребности, потому что я написал для решения ряда конкретных проблем, с которыми я имел дело.

Просто MHO

+0

Это не перетаскивание. это перетаскивание. – CodeGuy

+0

@CodeGuy, нет принципиальной разницы. Один простой использует цель при выпуске, а другой перехватывает на основе координат, запускающих анимацию. Мужчина тут же ответил на ваш вопрос. –

+0

Да, есть большая разница. посмотрите на перетаскивание с помощью JTable и перетаскивание с помощью JList ... с помощью JTable, есть привязка к ocurrs. Это то, что я хочу, но я хочу, чтобы это было с JLabels в определенных привязках к JPanel. – CodeGuy

0

Посмотрите в пакет перетаскивания: http://docs.oracle.com/javase/7/docs/api/java/awt/dnd/package-summary.html

+0

nudge, nudge, вы могли бы захотеть сослаться на Java 7 API - это могло бы дать вам проголосовать иначе;) – MadProgrammer

+0

Отредактировано, спасибо. Я просто пошел с первым результатом, когда я Bing'd java.awt.dnd. Не понял, что это была неправильная версия. – mrranstrom

+0

Не «неправильно» для каждого, но он выделяет те API, которые, возможно, устарели, поэтому, даже если OP все еще использует старую версию Java, они узнают о возможной будущей несовместимости – MadProgrammer

0

Попробуйте найти Java «привязку к сетке» примеры, а затем изменить соответственно на пары элементов графического интерфейса?

Смежные вопросы