Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag and Drop 
:(
    Опции темы
Reptor
Дата 20.8.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



Мне необходимо перетаскивать картинки и я вот увидел такой во пример.

http://blogs.sun.com/geertjan/entry/gettin...rted_on_windows

можно ли помоч его разобрать так как я про эту технологию мало что знаю а с англ у меня туго?. А в этом примере происходит то что мне необходимо. 



PM MAIL ICQ   Вверх
Reptor
Дата 21.8.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



может есть на русском какое объяснение про Drag and Drop? или ещё какой пример хороший?
PM MAIL ICQ   Вверх
_Michael
Дата 21.8.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



Ты рисунки откуда хочеш перетаскивать? Откудато извне твоей аппликации или внутри, из JLabel например?


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Reptor
Дата 21.8.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



_Michael,  Я хочу перетаскивать из  JLabel (JButton).
PM MAIL ICQ   Вверх
_Michael
Дата 21.8.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



Одним словом здесь в архиве плод моих творений, вроде разобрался более-менее. smile 
Полдня сидел думаю то что тебе надо smile

Это сообщение отредактировал(а) _Michael - 21.8.2007, 18:37

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  dnd.rar 3,56 Kb


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Reptor
Дата 21.8.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



_Michael, огромное спасибо буду смотреть  smile 
PM MAIL ICQ   Вверх
_Michael
Дата 21.8.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



 smile сначала скомпилируй запусти посмотри то ли что тебе надо. а потом если че не ясно спрашивай 


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Reptor
Дата 22.8.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



_Michael, похоже то что надо только небольшое уточнение в том что я беру с кнопки картинку и перетаскиваю её на произвольное место на JPanel.

Добавлено через 33 секунды
А в примере вроде есть только одна точка в которую можно перетащить

Добавлено через 2 минуты и 56 секунд
но это уже молочи ещё раз огромнейшее тебе спасибо _Michael,   smile  я думаю с меня плюс

Добавлено через 3 минуты и 37 секунд
да снова забыл если что будет не ясно то я обязательно обращюсь  smile 
PM MAIL ICQ   Вверх
_Michael
Дата 22.8.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



Цитата(Reptor @  22.8.2007,  18:10 Найти цитируемый пост)
_Michael, похоже то что надо только небольшое уточнение в том что я беру с кнопки картинку и перетаскиваю её на произвольное место на JPanel.

Добавлено через 33 секунды
А в примере вроде есть только одна точка в которую можно перетащить

Ну сам понимаеш что тут господствует LayoutManager который ты установил для своей панели, ет не так просто, ну а может я просто неумею smile но у меня на работе вроде как есть пример с перетаскиванием в любое место, завтра посмотрю

Цитата(Reptor @  22.8.2007,  18:10 Найти цитируемый пост)
я думаю с меня плюс

Было б очень кстати smile жду не дождусссь smile приятно что мой пример тебе помог smile

Цитата(Reptor @  22.8.2007,  18:10 Найти цитируемый пост)
да снова забыл если что будет не ясно то я обязательно обращюсь    
 чем сможем тем поможем smile


Это сообщение отредактировал(а) _Michael - 22.8.2007, 21:58


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
_Michael
Дата 23.8.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



Чтоб иконка была в любом месте, делаем минимальные изменения, а именно, DropTarget вешаем теперь не на JLabel а на панель на которой лежит етот наш JLabel чтоб можна было "дропать" в любом месте Панели
Код

//        Вот так было
//        label1 = new JLabel("Destination", SwingConstants.LEADING);
//        label1.setDropTarget(dt);
//        JPanel panel1 = new JPanel(new GridLayout(1, 1));
//        Вместо етого делаем так 
        label1 = new JLabel();//"Destination", SwingConstants.LEADING);
        JPanel panel1 = new JPanel();//new GridLayout(1, 1));
        panel1.setDropTarget(dt);
        TitledBorder t1 = BorderFactory.createTitledBorder("Drop anywhere here");
        panel1.add(label1);
        panel1.setBorder(t1);


и второе изменение, в методе public void drop(DropTargetDropEvent e) дописываем одну строчку, точнее две
Код

        public void drop(DropTargetDropEvent e) {
                        ......
// Вот так было но помним что мы повешали DropTarget на панель а не на JLabel поетому ети строки неверно.
//            JLabel c = (JLabel) source.getComponent();
//            c.setIcon((Icon) data);

            label1.setIcon((Icon) data);
            label1.setLocation(e.getLocation());
                }




--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Reptor
Дата 7.9.2007, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



Вот у меня ещё одна проблема возникла а состоит она в следующем:
 когда мы перетягиваем картинку то я так понял мы ее цепляем на уже сущуствующий Label (ну тот который на панели) собственно вот жта часть 
   
Код

public void drop(DropTargetDropEvent e) {    
                        ......    

            label1.setIcon((Icon) data);    
            label1.setLocation(e.getLocation());    
                }


а можно ли как то делать это на панели ? может как то картинку рисовать или ещё что я вчера пробовал так и нечё не получилось. Просто я зделал 2 лабел с картинками и я сначала тащу с одной а потом с 2-ой и они друг друга перетирают. А надо что б их 2 оставалось. 
Как это можно реализовать? 

Я предпалпгаю надо как то рисовать её на панели (создавать или ещё както) и делать массив вот этих кртинок DataFlavor я точно не знаю так как толком ещё мало понимаю весь процесс.
PM MAIL ICQ   Вверх
Reptor
Дата 8.9.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



 smile  вроде как данная проблема решилась. Просто создавал всегда лабел и использовал 
Код

setLayout(null)

PM MAIL ICQ   Вверх
Reptor
Дата 12.9.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



Ещё есть один вопрос а как сделать так что б когда при перетаскивании картинки картинка с источника исчезала?
PM MAIL ICQ   Вверх
Reptor
Дата 12.9.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 1
Всего: 0



зделал следующим образом и работает нормально 
Код


class DSListener implements DragSourceListener {

        /**
         * @param e the event
         */
        public void dragDropEnd(DragSourceDropEvent e) {

            if (e.getDropSuccess() == false) {
                System.out.println("not successful");
                DragLabel.this.setVisible(false);                         // VOT TYT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                return;
            }

            /*
             * the dropAction should be what the drop target specified
             * in acceptDrop
             */
            System.out.println("dragdropend action " + e.getDropAction());

            // this is the action selected by the drop target
            if (e.getDropAction() == DnDConstants.ACTION_MOVE)
                DragLabel.this.setText("");
        }


в классе DropLabel  и его внутренем классе DSListener в методе dragDropEnd зделал DragLabel.this.setVisible(false);   и хотел уточнить насколько это верно и не критично может более правильно в другом месте это делать и как то по другому? Может как то удалять картинку с DropLabel или ещё как?  smile 

PM MAIL ICQ   Вверх
_Michael
Дата 12.9.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 23.6.2007
Где: з полонини

Репутация: 1
Всего: 6



Ну если так подумать, то наверное метод public void dragDropEnd(DragSourceDropEvent e) для того и предназначем чтоб отлавливать завершение етого всего процесса. Не знаю но если тебе етого DragLabel больше не надо ведь фактически то ета DragLabel и служила для единственной цели служить источником картинки, и если ты картинку перетащил уже то можно ету DragLabel  вообще убрать из панели чтоб ее сборщик мусора "утилизировал" smile а не просто setVisible(false)

Это сообщение отредактировал(а) _Michael - 12.9.2007, 16:37


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.