1 | |
Нарисовать графические примитивы на компоненте01.02.2016, 02:27. Показов 1668. Ответов 2
Метки нет (Все метки)
Хочу нарисовать линию. Из точки А в точку Б. Но загвоздка в том, что я не напрямую пишу java-код, а создаю классы-экземпляры с помощью reflection из кода моего скриптового интерпретируемого языка, выполняющегося в рантайме в java-приложении. Так что метод paint() я переписать не могу, могу использовать только то, что есть. Могу создать JFrame, отобразить окно фрейма на экране с заданными размерами, взять его contentPane, графический контекст getGraphics, нарисовать на этом контексте линию drawLine, вызывать методы update/validate/repaint и еще много какие... Но максимум что происходит - линия появляется на долю секунды и сразу пропадает. Могу ли я как-то получить линии на компоненте, а если они еще не будут стираться при ресайзе - вообще красота. Но создавать новые классы, наследоваться и переопределять методы я наверное через reflection в рантайме не смогу - только пользоваться тем, что есть. Или java и здесь при всей своей многословности и наличии 100500 сложных вариантов сделать простейшие вещи не может дать мне такой функционал?
Добавлено через 58 минут Интернет - страшная сила. В 2010 году один человек сказал кому-то Мне не нужен никакой исходный рисунок, поэтому я просто конструирую пустой BufferedImage нужных размеров, беру его графический контекст, рисую на нем линии, и это все не пропадает при ресайзе. Победа разума, чистый рефлекшен и никаких новых классов, наследований и переписываний методов
0
|
01.02.2016, 02:27 | |
Ответы с готовыми решениями:
2
Нарисовать графические примитивы C++ Нарисовать графические примитивы и раскрасить их Нарисовать рисунок, используя графические примитивы Нарисовать рисунок, используя графические примитивы |
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
01.02.2016, 08:42 | 2 |
Нет никаких проблем в рантайме написать код и запустить его через свой класс лоадер. Так же можно поискать решение в обрасти инструментации байт кода.
Я незнаю сути вашей программы, но в 90% случаев когда вам нужен какой-то уж через чур хитрый функционал от языка, вы что-то делаете не так в архитектуре своей программы.
0
|
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 | |
01.02.2016, 14:07 | |
Помогаю со студенческими работами здесь
3
Нарисовать дом используя графические примитивы Нарисовать приведенный рисунок, используя графические примитивы Delphi Нарисовать основные графические примитивы, равномерно распределив их на экране, с поясняющим текстом "Нарисовать" массив, используя Canvas и графические примитивы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |