質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

解決済

1回答

1658閲覧

グラフィックスイメージを印刷するプログラムがうまく動かない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2018/09/11 06:26

編集2018/09/11 06:27

JavaFXを参考書で勉強しています。以下のプログラムでエラーが出ているところは
エラーメッセージで分かったのですが、修正の仕方が分かりません。
どなたか、教えていただけませんか。よろしくお願いいたします。

package application; import java.awt.ScrollPane; import java.io.File; import java.nio.file.Paths; import javafx.application.Application; import javafx.geometry.Insets; import javafx.print.PrinterJob; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.control.Label; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.image.Image; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage; public class PrintImage extends Application { Canvas canvas = new Canvas(); Label lblStatus = new Label(""); PrinterJob job = null; void fileOpen(Stage stage) { FileChooser fc = new FileChooser(); // ファイル選択ダイアログは、javafx.stage.FileChooserを使用します。 // FileChooser のインスタンスを生成します。 fc.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("Text Files", "*.txt"), // ファイル名拡張子に基づいてFileDialogで選択できるファイルを // フィルタリングするために使用する、拡張子フィルタを定義します。 new FileChooser.ExtensionFilter("Java Files", "*.txt"), // 指定された説明とファイル名拡張子を持つExtensionFilterを作成します。 new FileChooser.ExtensionFilter("All Files", "*.txt")); // All Files - フィルタのテキスト説明 // *.txt - 受け入れるファイル名拡張子 File file = fc.showSaveDialog(stage); // ファイル保存は、初期ファイル名をsetInitialFileNameで設定して // showOpenDialogの代わりにshowSaveDialogを呼びます。 // ファイル出力ダイアログを表示するには // FileChooserクラスのshowSaveDialogメソッドを使います。 // ボタンのクリックイベントでshowSaveDialogメソッドを使って // ダイアログを表示し、指定した出力ファイルの絶対パスを // showSaveDialogメソッドの戻り値として受け取ります。 // showSaveDialogメソッドの引数はjavafx.stage.Stageに // なっているため、ここではこのアプリのstageを渡しています。 // (nullでも問題ない)。また、出力ファイル指定ダイアログが // 閉じるまで後続の処理は実行されません。 if (file.isFile()) { lblStatus.setText(file.getAbsolutePath()); GraphicsContext gc = canvas.getGraphicsContext2D(); // イメージを描く System.out.println(file.getAbsolutePath()); String URL = file.getAbsolutePath(); Image img = new Image(Paths.get(URL).toUri().toString()); gc.drawImage(img, 0, 0); } } @Override public void start(Stage stage) throws Exception{ stage.setTitle("PrintText"); // setTitleメソッドを使ってファイル選択ダイアログのタイトルを設定します。 stage.setWidth(360); stage.setHeight(320); MenuBar menuBar = new MenuBar(); // MenuBarコントロールは通常ユーザー・インタフェースの // 最上部に配置され、Menusが内部に組み込まれています。 // メニューをメニュー・バーに追加するには、それを // menus ObservableListに追加します。 // デフォルトでは、メニュー・バーに追加した各メニューは、 // メニューのtext値が表示されたボタンとして表されます。 menuBar.setUseSystemMenuBar(true); // setUseSystemMenuBar(boolean value) // プロパティuseSystemMenuBarの値を設定します。 // MenuBarのメソッド Menu fileMenu = new Menu("ファイル"); // メニューを作るには、MenuBarとMenu、MenuItemを作り、 // MenuBarにMenuを登録、MenuにMenuItemを登録、 MenuItem mnuOpen = new MenuItem("開く"); // mnuOpen.setOnAction(event -> fileOpen(stage)); MenuItem mnuPrintDialog = new MenuItem("印刷設定"); mnuPrintDialog.setOnAction(event -> { if(job == null) job = PrinterJob.createPrinterJob(); // createPrinterJob() ジョブを作成するファクトリ・メソッド。 // PrinterJobのメソッド job.showPrintDialog(stage); }); MenuItem mnuPageSetup = new MenuItem("ページ設定"); mnuPageSetup.setOnAction(event -> { if(job == null) job = PrinterJob.createPrinterJob(); // createPrinterJob() ジョブを作成するファクトリ・メソッド。 // PrinterJobのメソッド job.showPageSetupDialog(stage); }); MenuItem mnuPrint = new MenuItem("印刷"); mnuPrint.setOnAction(event -> { if(job == null) job = PrinterJob.createPrinterJob(); // createPrinterJob() ジョブを作成するファクトリ・メソッド。 // PrinterJobのメソッド job.printPage(canvas); job.endJob(); }); MenuItem mnuExit = new MenuItem("終了"); mnuExit.setOnAction(event -> System.exit(0)); fileMenu.getItems().addAll(mnuOpen,mnuPrintDialog,mnuPageSetup, mnuPrint,mnuExit); menuBar.getMenus().add(fileMenu); canvas.setWidth(360); canvas.setHeight(300); // VBox root = new VBox(); ScrollPane scrl = new ScrollPane(canvas); root.setPadding(new Insets(5,5,5,5)); root.setSpacing(10.0); root.getChildren().addAll(menuBar,scrl, lblStatus); stage.setScene(new Scene(root)); stage.show(); } public static void main(String[] args) { launch(args); } } // エラーメッセージ C:\IdeaProjects\javaFX8_12\src\PrintImage.java エラー:(165, 43) java: 不適合な型: javafx.scene.canvas.Canvasをintに変換できません: エラー:(171, 27) java: インタフェース javafx.collections.ObservableList<E>のメソッド addAllは指定された型に適用できません。 期待値: javafx.scene.Node[] 検出値: javafx.scene.control.MenuBar,java.awt.ScrollPane,javafx.scene.control.Label 理由: 可変引数の不一致: java.awt.ScrollPaneをjavafx.scene.Nodeに変換できません:

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

import java.awt.ScrollPane;を
import javafx.scene.control.ScrollPane;に変更する。

new FileChooser.ExtensionFilter("All Files", ".txt"));を
new FileChooser.ExtensionFilter("All Files", "
.*"));に変更する。

投稿2018/09/11 10:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問