🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaFX

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1899閲覧

addEventHandlerが上手く機能しません・・・

nakagen

総合スコア24

JavaFX

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

0クリップ

投稿2021/01/29 14:20

前提・実現したいこと

なぜか、addHandlerでエラーがおきます・・・
どなたか分かる方はいますでしょうか・・・?

発生している問題・エラーメッセージ

Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.Error: Unresolved compilation problems: 型 Node のメソッド addEventHandler(EventType<T>, EventHandler<? super T>) は引数 (EventType<MouseEvent>, twelve.SampleEventHandler) に適用できません 型 Node のメソッド addEventHandler(EventType<T>, EventHandler<? super T>) は引数 (EventType<MouseEvent>, twelve.SampleEventHandler) に適用できません at kadai.twelve.start(twelve.java:98) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ... 1 more Exception running application kadai.twelve

該当のソースコード

javafx

1package kadai; 2 3import java.io.File; 4import java.io.FileInputStream; 5import java.io.FileOutputStream; 6import java.io.ObjectInputStream; 7import java.io.ObjectOutputStream; 8import java.util.ArrayList; 9 10import javafx.application.Application; 11import javafx.event.ActionEvent; 12import javafx.event.EventHandler; 13import javafx.scene.Scene; 14import javafx.scene.canvas.Canvas; 15import javafx.scene.canvas.GraphicsContext; 16import javafx.scene.control.ColorPicker; 17import javafx.scene.control.Menu; 18import javafx.scene.control.MenuBar; 19import javafx.scene.control.MenuItem; 20import javafx.scene.control.RadioMenuItem; 21import javafx.scene.control.ToggleGroup; 22import javafx.scene.control.ToolBar; 23import javafx.scene.input.MouseEvent; 24import javafx.scene.layout.BorderPane; 25import javafx.scene.paint.Color; 26import javafx.stage.FileChooser; 27import javafx.stage.Stage; 28 29public class twelve extends Application{ 30 private Canvas cv; 31 private ToolBar tb; 32 private ColorPicker cp; 33 private ToggleGroup tg; 34 private RadioMenuItem[] rmi = new RadioMenuItem[4]; 35 private MenuItem[] mi = new MenuItem[2]; 36 private Menu [] mn = new Menu[3]; 37 private MenuBar mb; 38 private ArrayList<Shape> shapeList; 39 private int currentShape; 40 private Color currentColor; 41 private double x1,x2,y1,y2; 42 public static void main(String[]args) { 43 launch(args); 44 } 45 public void start(Stage stage)throws Exception{ 46 cv = new Canvas(600,340); 47 mb = new MenuBar(); 48 cp = new ColorPicker(); 49 tb = new ToolBar(); 50 51 mn[0] = new Menu("ファイル"); 52 mn[1] = new Menu("設定"); 53 mn[2] = new Menu("図形"); 54 55 mi[0] = new MenuItem("開く"); 56 mi[1] = new MenuItem("保存"); 57 58 rmi[0] = new RadioMenuItem("四角形"); 59 rmi[1] = new RadioMenuItem("楕円"); 60 rmi[2] = new RadioMenuItem("直線"); 61 rmi[3] = new RadioMenuItem("三角形"); 62 63 mn[0].getItems().add(mi[0]); 64 mn[0].getItems().add(mi[1]); 65 66 mn[1].getItems().add(mn[2]); 67 68 mn[2].getItems().add(rmi[0]); 69 mn[2].getItems().add(rmi[1]); 70 mn[2].getItems().add(rmi[2]); 71 mn[2].getItems().add(rmi[3]); 72 73 mb.getMenus().add(mn[0]); 74 mb.getMenus().add(mn[1]); 75 76 tb.getItems().add(cp); 77 78 tg = new ToggleGroup(); 79 rmi[0].setToggleGroup(tg); 80 rmi[1].setToggleGroup(tg); 81 rmi[2].setToggleGroup(tg); 82 rmi[3].setToggleGroup(tg); 83 84 BorderPane bp = new BorderPane(); 85 86 bp.setTop(mb); 87 bp.setCenter(cv); 88 bp.setBottom(tb); 89 90 for(int i = 0;i<mi.length;i++) { 91 mi[i].setOnAction(new SampleEventHandler()); 92 } 93 for(int i = 0;i<rmi.length;i++) { 94 rmi[i].setOnAction(new SampleEventHandler()); 95 } 96 cp.setOnAction(new SampleEventHandler()); 97 98 cv.addEventHandler(MouseEvent.MOUSE_PRESSED,(new SampleEventHandler())); 99 cv.addEventHandler(MouseEvent.MOUSE_RELEASED,(new SampleEventHandler())); 100 101 shapeList =new ArrayList<Shape>(); 102 currentShape = Shape.TRI; 103 currentColor = Color.RED; 104 cp.setValue(currentColor); 105 rmi[0].setSelected(true); 106 x1 = -1;y1 = -1;x2 = 1;y2 = -1; 107 108 Scene sc = new Scene(bp,600,400); 109 110 stage.setScene(sc); 111 stage.setTitle("サンプル"); 112 stage.show(); 113 } 114 class SampleEventHandler implements EventHandler<ActionEvent>{ 115 public void handle(ActionEvent e) { 116if(e.getSource() == mi[0]) { 117 try { 118 FileChooser fc = new FileChooser(); 119 fc.getExtensionFilters().add( 120 new FileChooser.ExtensionFilter("グラフィックファイル", "*,g")); 121 File flo = fc.showOpenDialog(new Stage()); 122 if(flo != null) { 123 ObjectInputStream oi = new ObjectInputStream(new FileInputStream(flo)); 124 Shape tmp = null; 125 shapeList.clear(); 126 while((tmp = (Shape)oi.readObject())!= null){ 127shapeList.add(tmp); 128 } 129 oi.close(); 130 } 131 } 132 catch(Exception ex) { 133 ex.printStackTrace(); 134 } 135 GraphicsContext gc = cv.getGraphicsContext2D(); 136 gc.clearRect(0, 0, 600, 340); 137 for(int i = 0;i<shapeList.size();i++) { 138 Shape sh = (Shape)shapeList.get(i); 139 sh.draw(gc); 140 } 141 }else if(e.getSource() == mi[1]) { 142 try { 143 FileChooser fc = new FileChooser(); 144 fc.getExtensionFilters().add( 145 new FileChooser.ExtensionFilter("グラフィックファイル", "*,g")); 146 File fls = fc.showOpenDialog(new Stage()); 147 if(fls != null) { 148 ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(fls)); 149 for(int i = 0;i<shapeList.size();i++) { 150 oo.writeObject(shapeList.get(i)); 151 } 152 oo.writeObject(null); 153 oo.close(); 154 } 155 } 156 catch(Exception ex) { 157 ex.printStackTrace(); 158 } 159} 160 else if(e.getSource() == rmi[0]) { 161 currentShape = Shape.RECT; 162 } 163 else if(e.getSource() == rmi[1]) { 164 currentShape = Shape.OVAL; 165 } 166 else if(e.getSource() == rmi[2]) { 167 currentShape = Shape.LINE; 168 } 169 else if(e.getSource() == rmi[3]) { 170 currentShape = Shape.TRI; 171 } 172 else if(e.getSource() == cp) { 173 currentColor = cp.getValue(); 174 } 175 } 176 } 177 class SampleMouseEventHandler implements EventHandler<MouseEvent>{ 178 public void handle(MouseEvent e) { 179if(e.getEventType() == MouseEvent.MOUSE_PRESSED) { 180 x2 = e.getX(); 181 y2 = e.getY(); 182 if(x1 < 0 || y1 < 0 ||(x1 == x2 && y1 == y2)) 183 return; 184 Shape sh = null; 185 if(currentShape == Shape.RECT){ 186 sh = new Rect(); 187 } 188 else if(currentShape == Shape.OVAL) { 189 sh = new Rect(); 190 } 191else if(currentShape == Shape.LINE) { 192 sh = new Trian(); 193 } 194else if(currentShape == Shape.TRI) { 195 sh = new Trian(); 196 } 197 double r = currentColor.getRed(); 198 double g= currentColor.getGreen(); 199 double b = currentColor.getBlue(); 200 sh.setColor(r,g,b); 201 202 if(currentShape != Shape.LINE){ 203 if(x1 > x2) { 204 x2 = x1; 205 x1 = e.getX(); 206 } 207 if(y1 > y2) { 208 y2 = y1; 209 y1 = e.getX(); 210 } 211 } 212 sh.setStartPoint(x1,y1); 213 sh.setEndPoint(x2,y2); 214 215 shapeList.add(sh); 216 217 GraphicsContext gc = cv.getGraphicsContext2D(); 218 sh.draw(gc); 219 } 220 } 221 } 222 223}

補足情報(FW/ツールのバージョンなど)

jdk14

TN8001👍を押しています

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

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

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

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

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

m.ts10806

2021/01/29 21:31

投げっぱなしの質問が多く、未解決のままどんどん(ほぼ丸投げのような)質問していっています。 管理しきれますか? 放置質問が多いとそのうち相手してくれる人いなくなります。 「解決する気ないんだな」と理解されます。
dodox86

2021/01/29 23:25

過去の質問を拝見するに、課題を終らせることをとにかく優先していて、ひとつひとつ理解をせずに進んでいる印象を受けます。JavaFX(を含むGUIのフレームワークは特に)は基本の理解が無いと取り扱いは無理です。回答をいただいても消化できません。
guest

回答1

0

ベストアンサー

Java

1cv.addEventHandler(MouseEvent.MOUSE_PRESSED,(new SampleEventHandler())); 2cv.addEventHandler(MouseEvent.MOUSE_RELEASED,(new SampleEventHandler()));

SampleMouseEventHandlerを入れるつもりだったんじゃないですか?

投稿2021/02/05 03:56

編集2023/07/26 13:50
TN8001

総合スコア9862

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

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

nakagen

2021/02/05 05:00

Mouseを入れ忘れた私のミスでした・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問