powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сохранить chart из диалога, не показывая его
4 сообщений из 4, страница 1 из 1
Как сохранить chart из диалога, не показывая его
    #38400116
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задачка такая - на компоненте класса JDialog создается объект JFreeChart, полученное изображение потом надо сохранить по указанному пути в виде jpeg-файла. Путь решения уже давно накатанный, однаок есть серьезная проблема - показывать этот диалог совсем нежелательно, т.е. картинка должна создаться, а потом должна быть сохранена, и все это "вслепую" - диалог не должен показываться. Сделал примерно так:
Код: java
1.
2.
3.
4.
5.
6.
            NewTimeDlg dlg = new NewTimeDlg((Frame) null);
// якобы инициализация чарта
            dlg.initNewTimeChart();
// созданный объект специально созданного класса для сохранения в jpeg
            CreateJPEG jpgFile = new CreateJPEG();
            jpgFile.saveComponentAsJPEG(dlg.getContentPane(), "Q:\\Test\\test.jpg");



Если бы диалог бы видимым и эта процедура выполнялась бы по нажатию некой кнопки на нем, то в файле бы без проблем сохранился чарт. Однако в этом случае сохраняется только пустая панель ну и кнопки внизу. Подскажите, пожалуйста, пути решения, они наверняка существуют.
...
Рейтинг: 0 / 0
Как сохранить chart из диалога, не показывая его
    #38400568
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверняка вам надо посмотреть код внутри NewTimeDlg и вызвать генерацию чарта непосредственно, без участия класса диалога. Или нажать кнопку "программно".
...
Рейтинг: 0 / 0
Как сохранить chart из диалога, не показывая его
    #38401395
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проанализировать код и отделить генерацию графика JFreeChart от диалога Swing. Из-за того что у вас нарушены coupling и cohesion, вы не можете получить график, без диалога. А это более чем странно.
Покажите код использования JFreeChart. Вам нужно его вынести в отдельный метод, где Graphics (и опционально размер) будет параметром. Этот метод не должен зависеть от Swing.
Тогда вы сможете вызывать это метод, подсовывая ему BufferedImage.getGraphics(). А затем сохранять BufferedImage в файл через ImageIO.
Т.е. задача решается тупо рефакторингом вашего кода.

Возможны, конечно, и другие решения с отрисовкой всего диалога в свой BufferedImage. Но это уже в форум по проктологии.
...
Рейтинг: 0 / 0
Как сохранить chart из диалога, не показывая его
    #38401903
Полуламер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю за ответы, я только сегодня заглянул в тему, но еще вчера понял, что задал идиотский вопрос. Копия диалога целиком, со всеми его управляющими элементами, мне совсем не нужна, достаточно создать чарт по заданному набору данных, а для него все в той же библиотеке есть замечательный метод saveChartAsJPEG. Т.е. решение в общем-то тривиальное, просто сразу как-то не задумался.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сохранить chart из диалога, не показывая его
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]