|
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
|
|||||||||||||||||||||||||||||||
Нарисовать квадрат и добавить возможность перетаскивать его по экрану23.05.2015, 11:03. Показов 10852. Ответов 3
Метки нет (Все метки)
Задача такая. Нарисовать квадрат и добавить возможность перетаскивать его по экрану.
Что я делаю: Для начала надо как-то отрисовать фигуру.. Я добавил кнопку на главную панель(mainPanel) и при нажатии она выполняет отрисовку. Листинг ниже:
Теперь, когда фигура отрисовывается после нажатия кнопки, необходимо реализовать перемещение этой фигуры. Изначально, я представлял себе, что на фигуру смогу повесить слушателя(как на кнопку), но увы... Поэтому, я добавил прослушивание события "mousePressed" на mainPanel. Теперь я отлавливаю все зажатия мыши... Но остается непонятен вопрос... а как вообще разобрать, что мышкой было зажато? Может это было пустое поле, а может это была фигура... И поэтому в тело слушателя mousePressed был добавлен следующий код:
И теперь, когда я определил, что фигура зажата, оставалось только сделать так чтобы она "бежала" за мышкой и после того как я отпущу кнопку - фигура упадет в то место где была мышь... Для этого я воспользовался слушателем mouseDraged компонента mainPanel листинг ниже:
Встал вопрос... А как убрать след? Возвращаясь к событию mouseDraged, в него было необходимо было добавить перерисовку. Дополненный листинг события ниже:
Кроме того интересуют пояснения по архитектуре. Верно ли мной выбрано решение(алгоритм) для поставленной задачи? Листинг программы под спойлером. Кликните здесь для просмотра всего текста
0
|
|||||||||||||||||||||||||||||||
| 23.05.2015, 11:03 | |
|
Ответы с готовыми решениями:
3
Нарисовать снеговика, перемещать его по экрану сначала слева направо, а потом сверху вниз вдоль границ графического окна |
|
Автоматизируй это!
|
|
| 23.05.2015, 11:52 | |
|
можно конечно и так, но если таскать придется именно Квадраты, то почему просто на форме не рисовать панель с черными границами? а на панель навесить МаусМоушнЛистенер, чтобы отслеживать МаусДраг и перерисовывать по новым коорднатам
0
|
|
|
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
|
|
| 23.05.2015, 12:19 [ТС] | |
|
Кстати идея у вас хорошая... Перетаскивать планирую и другие геометрические фигуры поэтому возникла такая необходимость.
0
|
|
|
Автоматизируй это!
|
|
| 24.05.2015, 10:53 | |
|
ну если другие тоже, то тогда надо сразу по вашему методу делать...если конечно нет возможности разместить компонент (к примеру панель) произвольной формы
Добавлено через 21 час 45 минут waip, кстати, вообще можно именно панелью и обойтись!!! Можно ведь сделать ее "невидимой" (цвет фона и без границ) а на самой панели рисовать любые фигуры. А уж панель таскать и слушатель к ней привязать -не проблема!
0
|
|
| 24.05.2015, 10:53 | |
|
Помогаю со студенческими работами здесь
4
В центре экрана нарисовать квадрат и выполнить его диагональную штриховку На всю форму залита картинка как фон, при зажатой левой клавише можно перетаскивать форму по экрану На всю форму залита картинка как фон, при зажатой левой клавише можно перетаскивать форму по экрану Нарисовать квадрат по указанным координатам его центра (точки пересечения диагоналей) и длиной стороны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|