Как распечатать изображение панели в формате BMPJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как распечатать изображение панели в формате BMP

Сообщение Anonymous »


Мне удалось построить два графика (столбчатую и линейную диаграмму) на одной панели.

Я пытаюсь реализовать кнопку сохранения, которая при нажатии записывает полученное изображение (с осями) в выбранное мной сохраненное изображение в формате BMP.

Код запускается, я получаю утвердительное предупреждение и создается файл изображения. Однако результирующий файл изображения пуст (0 байт).

@FXML // fx:id="graph" частный граф панели; // Значение, введенное FXMLLoader @FXML // fx:id="saveButton" частная кнопка saveButton; // Значение, введенное FXMLLoader // ... @FXML void clickSave (событие ActionEvent) { Стадия yourStage = (Этап) saveButton.getScene().getWindow(); FileChooser fileChooser = новый FileChooser (); fileChooser.setInitialDirectory(новый файл("Путь\\С\\Пробелы")); fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Файлы BMP", "*.bmp")); // Показать диалог сохранения Файл file = fileChooser.showSaveDialog(yourStage); если (файл != ноль) { если (!file.exists()) { пытаться { Files.createFile(file.toPath()); } catch (IOException e) { е.printStackTrace(); // Обрабатываем исключение } } WritableImage writableImage =graph.snapshot(new SnapshotParameters(), null); BufferedImage bufferedImage = SwingFXUtils.fromFXImage(writableImage, null); пытаться { ImageIO.write(bufferedImage, "BMP", файл); // Информируем пользователя об успешном сохранении Оповещение оповещение = новое оповещение(Alert.AlertType.INFORMATION); alert.setTitle("Файл сохранен"); alert.setHeaderText(ноль); alert.setContentText("Файл успешно сохранен."); оповещение.showAndWait(); } catch (IOException e) { е.printStackTrace(); // Информируем пользователя об ошибке Оповещение = новое оповещение(Alert.AlertType.ERROR); alert.setTitle("Ошибка"); alert.setHeaderText(ноль); alert.setContentText("Произошла ошибка при сохранении файла."); оповещение.showAndWait(); } } } Изменить: Следуя прокомментированному совету @James_D, я изменил код на следующий, но проблема осталась.
@FXML void clickSave (событие ActionEvent) { Стадия stage = (Stage) saveButton.getScene().getWindow(); FileChooser fileChooser = новый FileChooser (); fileChooser.setInitialDirectory(новый файл("Путь\\С\\Пробелы")); fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Файлы BMP", "*.bmp")); // Показать диалог сохранения Файл файл = fileChooser.showSaveDialog(этап); если (файл != ноль) { WritableImage writableImage =graph.snapshot(new SnapshotParameters(), null); BufferedImage bufferedImage = SwingFXUtils.fromFXImage(writableImage, null); пытаться { ImageIO.write(bufferedImage, "BMP", файл); если (!file.exists()) { Files.createFile(file.toPath()); } // Информируем пользователя об успешном сохранении Оповещение оповещение = новое оповещение(Alert.AlertType.INFORMATION); alert.setTitle("Файл сохранен"); alert.setHeaderText(ноль); alert.setContentText("Файл успешно сохранен."); оповещение.showAndWait(); } catch (IOException e) { е.printStackTrace(); // Информируем пользователя об ошибке Оповещение = новое оповещение(Alert.AlertType.ERROR); alert.setTitle("Ошибка"); alert.setHeaderText(ноль); alert.setContentText("Произошла ошибка при сохранении файла."); оповещение.showAndWait(); } } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»