Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
1

Нарисовать графические примитивы на компоненте

01.02.2016, 02:27. Показов 1668. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу нарисовать линию. Из точки А в точку Б. Но загвоздка в том, что я не напрямую пишу java-код, а создаю классы-экземпляры с помощью reflection из кода моего скриптового интерпретируемого языка, выполняющегося в рантайме в java-приложении. Так что метод paint() я переписать не могу, могу использовать только то, что есть. Могу создать JFrame, отобразить окно фрейма на экране с заданными размерами, взять его contentPane, графический контекст getGraphics, нарисовать на этом контексте линию drawLine, вызывать методы update/validate/repaint и еще много какие... Но максимум что происходит - линия появляется на долю секунды и сразу пропадает. Могу ли я как-то получить линии на компоненте, а если они еще не будут стираться при ресайзе - вообще красота. Но создавать новые классы, наследоваться и переопределять методы я наверное через reflection в рантайме не смогу - только пользоваться тем, что есть. Или java и здесь при всей своей многословности и наличии 100500 сложных вариантов сделать простейшие вещи не может дать мне такой функционал?

Добавлено через 58 минут
Интернет - страшная сила. В 2010 году один человек сказал кому-то
рисуйте на Image, а его уже засуньте в какой-нить компонент, к примеру в JLabel
В конце того же года другой человек расписал это в коде:Нужно загрузить image и на нем что-то нарисовать

Мне не нужен никакой исходный рисунок, поэтому я просто конструирую пустой BufferedImage нужных размеров, беру его графический контекст, рисую на нем линии, и это все не пропадает при ресайзе. Победа разума, чистый рефлекшен и никаких новых классов, наследований и переписываний методов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2016, 02:27
Ответы с готовыми решениями:

Нарисовать графические примитивы C++
Помогите не могу нарисовать в программе

Нарисовать графические примитивы и раскрасить их
задание:нарисовать основные графические примитивы(эллипс,треугольник,прямоугольник,линию,круг и...

Нарисовать рисунок, используя графические примитивы
Привет всем! Прошу помогите с графическими примитивами на Delphi. Необходимо построить этот рисунок...

Нарисовать рисунок, используя графические примитивы
составлены из простейших геометрических фигур треугольников, квадратов, окружностей, точек.

2
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
01.02.2016, 08:42 2
Цитата Сообщение от _Ivana Посмотреть сообщение
Но создавать новые классы, наследоваться и переопределять методы я наверное через reflection в рантайме не смогу - только пользоваться тем, что есть.
Цитата Сообщение от _Ivana Посмотреть сообщение
Или java и здесь при всей своей многословности и наличии 100500 сложных вариантов сделать простейшие вещи не может дать мне такой функционал?
Нет никаких проблем в рантайме написать код и запустить его через свой класс лоадер. Так же можно поискать решение в обрасти инструментации байт кода.

Я незнаю сути вашей программы, но в 90% случаев когда вам нужен какой-то уж через чур хитрый функционал от языка, вы что-то делаете не так в архитектуре своей программы.
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
01.02.2016, 14:07  [ТС] 3
KEKCoGEN, спасибо, мне уже на ЛОРе в красках расписали как это ужасно - то что я делаю Я с java познакомился недавно, суть программы проста - swing-GUI интерпретатор скриптового языка. Все работает, захотелось interpop с языком реализации (java). Чтобы из моих скриптов можно было вызывать ее библиотеки и классы/методы. В инете нашел механизм reflection - в первом приближении частично устроил, доступны стандартные пакеты lang и util с математическими функциями и коллекциями и остальное, что загружается по умолчанию, но пока мною не пробованное и следовательно неизвестное. Частично доступны swing-овые вещи - могу создавать модальные выпадающие окошки, обычные окна с добавленными элементами, даже удалось победить графику - могу рисовать графические примитивы на фрейме и они не пропадают при ресайзе (напомню, все через reflection, никаких собственных классов-наследований и переписываний методов paint() и т.п.). Только на обработчике событий кнопок я конечно пожух. Создавать в рантайме новые AbstractAction и тем более писать java-код их методов я пока не осилил.

И тут меня обнадежили сообщением, что можно написать в рантайме код, скомпилить его и запустить в работающем приложении. Я пока слабо себе представляю, как он найдет нужные поля и методы уже работающих классов (или по именам и это просто сработает?), но сам факт вдохновляет. Значит дополнительно к существующему механизму общения через reflection попробую навелосипедить еще и этот.

Добавлено через 30 минут
ЗЫ а пока это выглядит (и в коде и в графическом окне вывода) примерно так: https://www.cyberforum.ru/lisp... ost8695193
0
01.02.2016, 14:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2016, 14:07
Помогаю со студенческими работами здесь

Нарисовать дом используя графические примитивы
Создать рисунок в цвете с поясняющим текстом, представляющий собой совокупность различных основных...

Нарисовать приведенный рисунок, используя графические примитивы Delphi
используя графические примитивы Delphi изобразить рисунок и подписать по английски.

Нарисовать основные графические примитивы, равномерно распределив их на экране, с поясняющим текстом
Нарисовать основные графические примитивы, равномерно распределив их на экране, с поясняющим...

"Нарисовать" массив, используя Canvas и графические примитивы
Имеется двумерный массив состоящий из нулей и единиц, где нуль должен отображаться как квадрат....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru