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

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

詳細はこちら
JavaFX

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

Java

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1186閲覧

javafxにてカラーを変更するボタンが正常に設置されるようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaFX

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

Java

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/12/15 10:47

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です。

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

色を変えるボタンが正常に(1つしか)設置されない

1個しか出ないのではなく、全部重なっています。
HBox等に入れて重ならないようにしましょう。

Java

1import javafx.application.Application; 2import javafx.event.ActionEvent; 3import javafx.event.EventHandler; 4import javafx.scene.Group; 5import javafx.scene.Scene; 6import javafx.scene.canvas.Canvas; 7import javafx.scene.canvas.GraphicsContext; 8import javafx.scene.control.Button; 9import javafx.scene.control.ToggleButton; 10import javafx.scene.control.ToggleGroup; 11import javafx.scene.input.MouseEvent; 12import javafx.scene.layout.HBox; 13import javafx.scene.paint.Color; 14import javafx.stage.Stage; 15 16 17public class Draw extends Application { 18 public static void main(String[] args) { launch(); } 19 20 private GraphicsContext graphic; 21 22 public void start(Stage myStage) { 23 myStage.setTitle("お絵かきアプリ"); 24 myStage.setWidth(500); 25 myStage.setHeight(500); 26 27 Canvas canvas = new Canvas(1500, 1200); 28 canvas.setOnMousePressed(this::mousePressed); 29 canvas.setOnMouseDragged(this::mouseDragged); 30 canvas.setOnMouseReleased(this::mouseReleased); 31 32 graphic = canvas.getGraphicsContext2D(); 33 graphic.setLineWidth(4); 34 35 ToggleButton black = new ToggleButton("黒"); 36 black.setSelected(true); 37 ToggleButton red = new ToggleButton("赤"); 38 ToggleButton blue = new ToggleButton("青"); 39 ToggleButton yellow = new ToggleButton("黄色"); 40 ToggleButton green = new ToggleButton("緑"); 41 ToggleButton pink = new ToggleButton("ピンク"); 42 ToggleButton orange = new ToggleButton("オレンジ"); 43 Button clear = new Button("キャンバスをリセット"); 44 45 ToggleGroup group = new ToggleGroup(); 46 black.setToggleGroup(group); 47 red.setToggleGroup(group); 48 blue.setToggleGroup(group); 49 yellow.setToggleGroup(group); 50 green.setToggleGroup(group); 51 pink.setToggleGroup(group); 52 orange.setToggleGroup(group); 53 54 EventHandler<ActionEvent> handler = e -> { 55 ToggleButton button = (ToggleButton) e.getSource(); 56 switch (button.getText()) { 57 case "黒": graphic.setStroke(Color.BLACK); break; 58 case "赤": graphic.setStroke(Color.RED); break; 59 case "青": graphic.setStroke(Color.BLUE); break; 60 case "黄色": graphic.setStroke(Color.YELLOW); break; 61 case "緑": graphic.setStroke(Color.GREEN); break; 62 case "ピンク": graphic.setStroke(Color.PINK); break; 63 case "オレンジ": graphic.setStroke(Color.ORANGE); break; 64 } 65 }; 66 67 black.setOnAction(handler); 68 red.setOnAction(handler); 69 blue.setOnAction(handler); 70 yellow.setOnAction(handler); 71 green.setOnAction(handler); 72 pink.setOnAction(handler); 73 orange.setOnAction(handler); 74 clear.setOnAction(e -> graphic.clearRect(0, 0, canvas.getWidth(), canvas.getHeight())); 75 76 77 HBox box = new HBox(black, red, blue, yellow, green, pink, orange, clear); 78 79 myStage.setScene(new Scene(new Group(canvas, box))); 80 myStage.show(); 81 } 82 83 private void mousePressed(MouseEvent e) { 84 graphic.beginPath(); 85 graphic.moveTo(e.getX(), e.getY()); 86 } 87 88 private void mouseDragged(MouseEvent e) { 89 graphic.lineTo(e.getX(), e.getY()); 90 graphic.stroke(); 91 } 92 93 private void mouseReleased(MouseEvent e) { 94 graphic.lineTo(e.getX(), e.getY()); 95 graphic.stroke(); 96 graphic.closePath(); 97 } 98}

気になった点を変更させていただきました^^

投稿2020/12/15 12:00

TN8001

総合スコア9855

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

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

退会済みユーザー

退会済みユーザー

2020/12/15 13:51

ありがとうございます! 改善しました!! 本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問