javafxにてカラーを変更するボタンが正常に設置されるようにしたい
ここに質問の内容を詳しく書いてください
javafxにてCanvasにお絵かきをするプログラムを書いていたのですが、設置しているはずのボタンが正常に設置されません。詳しく書くと、最後に設置したボタン1つのみが表示されます。getChildren,addAll()にも加えているのですがうまくいきません。改善方法はありますでしょうか。
発生している問題・エラーメッセージ
色を変えるボタンが正常に(1つしか)設置されない
該当のソースコード
java
1 2import javafx.application.Application; 3import javafx.event.ActionEvent; 4import javafx.event.EventHandler; 5import javafx.scene.Group; 6import javafx.scene.Scene; 7import javafx.scene.canvas.Canvas; 8import javafx.scene.canvas.GraphicsContext; 9import javafx.scene.control.Button; 10import javafx.scene.input.MouseEvent; 11import javafx.scene.paint.Color; 12import javafx.stage.Stage; 13 14 15public class Draw extends Application { 16 17 18 public static void main(String[] args) { 19 20 launch(); 21 22 } 23 24 25GraphicsContext Graphic; 26 27 public void start(Stage myStage) { 28 29 30 31 myStage.setTitle("お絵かきアプリ"); 32 33 34 myStage.setWidth(500); 35 myStage.setHeight(500); 36 37 Group rootNode = new Group(); 38 39 Canvas cn = new Canvas(1500, 1200); 40 cn.setOnMousePressed(event -> mousePressed(event)); 41 cn.setOnMouseDragged(event -> mouseDragged(event)); 42 43 Graphic = cn.getGraphicsContext2D(); 44 Graphic.setLineWidth(4); 45 46 Button Black = new Button("黒"); 47 Button Red = new Button("赤"); 48 Button Blue = new Button("青"); 49 Button Yellow = new Button("黄色"); 50 Button Green = new Button("緑"); 51 Button Pink = new Button("ピンク"); 52 Button Orange = new Button("オレンジ"); 53 Button clear = new Button("キャンバスをリセット"); 54 55 Black.setOnAction(new EventHandler<ActionEvent>() { 56 57 public void handle(ActionEvent Event) { 58 59 Graphic.setStroke(Color . BLACK ); 60 61 62 } 63 64 }); 65 66 67 68 Red.setOnAction(new EventHandler<ActionEvent>() { 69 70 71 public void handle(ActionEvent Event1) { 72 73 Graphic.setStroke(Color . RED ); 74 75 } 76 77 }); 78 79 80 81 Blue.setOnAction(new EventHandler<ActionEvent>() { 82 83 84 public void handle(ActionEvent Event2) { 85 86 Graphic.setStroke(Color . BLUE ); 87 88 } 89 90 }); 91 92 93 94 Yellow.setOnAction(new EventHandler<ActionEvent>() { 95 96 97 public void handle(ActionEvent Event3) { 98 99 Graphic.setStroke(Color . YELLOW ); 100 101 } 102 103 }); 104 105 106 107 Green.setOnAction(new EventHandler<ActionEvent>() { 108 109 110 public void handle(ActionEvent Event4) { 111 112 Graphic.setStroke(Color . GREEN ); 113 114 } 115 116 }); 117 118 119 120 121 Pink.setOnAction(new EventHandler<ActionEvent>() { 122 123 124 public void handle(ActionEvent Event5) { 125 126 Graphic.setStroke(Color . PINK ); 127 128 } 129 130 }); 131 132 133 134 Orange.setOnAction(new EventHandler<ActionEvent>() { 135 136 137 public void handle(ActionEvent Event6) { 138 139 Graphic.setStroke(Color . ORANGE ); 140 141 } 142 143 }); 144 145 146 147 148 clear.setOnAction(new EventHandler<ActionEvent>() { 149 150 151 public void handle(ActionEvent Event7) { 152 153 154 Graphic.clearRect(0 , 0 , cn.getWidth(), cn.getHeight()); 155 Graphic.beginPath(); 156 157 158 159 } 160 161 }); 162 163 164 165 166 rootNode.getChildren().addAll(cn , Black , Red , Blue , Yellow , Green , Pink , Orange , clear ); 167 myStage.setScene(new Scene(rootNode)); 168 169 170 171 myStage.show(); 172 173} 174 175 void mousePressed(MouseEvent Event2) { 176 Graphic.moveTo(Event2.getX(), Event2.getY()); 177 178} 179 180 void mouseDragged(MouseEvent Event3) { 181 Graphic.lineTo(Event3.getX(), Event3.getY()); 182 Graphic.stroke(); 183 184} 185 186 187} 188 189
試したこと
FlowPaneの使用
補足情報(FW/ツールのバージョンなど)
環境はjava8です。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/15 13:51