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

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

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

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

Java

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

JavaScript

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

Q&A

解決済

1回答

564閲覧

1つのHBoxを左上に、もう一方を右上に設置したい

退会済みユーザー

退会済みユーザー

総合スコア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/16 09:26

編集2021/03/08 03:05

前提・実現したいこと

javafxにてCanvasを使った絵を書くプログラムを作っています。
位置の指定はしているのですが、指定なりなんなりしても重なってしまいます。
2つの中身の要素をまとめて1つのHBoxに入れたりもしたのですが改善しませんでした。
載せているプログラムは上記の操作をする前のものです。
色を変えるボタンのHBoxをCanvasの左上に、線の太さを変えるHBoxをCanvasの右上に配置したいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

2つのHBoxが重なってしまう

該当のソースコード

javafx

1import javafx.application.Application; 2import javafx.event.ActionEvent; 3import javafx.event.EventHandler; 4import javafx.geometry.Pos; 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.control.TextField; 11import javafx.scene.input.MouseEvent; 12import javafx.scene.layout.FlowPane; 13import javafx.scene.layout.HBox; 14import javafx.scene.paint.Color; 15import javafx.stage.Stage; 16public class Draw extends Application { 17 public static void main(String[] args) { 18 launch(); 19 } 20GraphicsContext Graphic; 21 public void start(Stage myStage) { 22 myStage.setTitle("お絵かきアプリ"); 23 myStage.setWidth(500); 24 myStage.setHeight(500); 25 Canvas cn = new Canvas(1500, 1200); 26 cn.setOnMousePressed(event -> mousePressed(event)); 27 cn.setOnMouseDragged(event -> mouseDragged(event)); 28 29 Graphic = cn.getGraphicsContext2D(); 30 Button Black = new Button("黒"); //色を変えるボタンを設置 31 Button Brown = new Button("茶"); 32 Button Red = new Button("赤"); 33 Button Blue = new Button("青"); 34 Button Sky = new Button("水色"); 35 Button Yellow = new Button("黄"); 36 Button Green = new Button("緑"); 37 Button Pink = new Button("ピンク"); 38 Button Orange = new Button("オレンジ"); 39 Button clear = new Button("キャンバスをリセット"); 40 //線の太さを変えるテキストフィールドとボタン 41 TextField num = new TextField(); 42 num.setPrefWidth(100); 43 num.setText("変更したい太さ"); 44 Button cha = new Button("変更"); 45 cha.setOnAction(new EventHandler<ActionEvent>() { 46 public void handle(ActionEvent Event) { 47 if(num != null) { 48 int n = Integer.parseInt(num.getText()); 49 Graphic.setLineWidth(n); 50 Graphic.beginPath(); 51 } 52 } 53 }); 54 Black.setOnAction(new EventHandler<ActionEvent>() { 55 public void handle(ActionEvent Event) { 56 Graphic.setStroke(Color . BLACK ); 57 Graphic.beginPath(); 58 } 59 }); 60 Brown.setOnAction(new EventHandler<ActionEvent>() { 61 public void handle(ActionEvent Event) { 62 Graphic.setStroke(Color . BROWN ); 63 Graphic.beginPath(); 64 } 65 }); 66 Red.setOnAction(new EventHandler<ActionEvent>() { 67 public void handle(ActionEvent Event1) { 68 Graphic.setStroke(Color . RED ); 69 Graphic.beginPath(); 70 } 71 }); 72 Blue.setOnAction(new EventHandler<ActionEvent>() { 73 public void handle(ActionEvent Event2) { 74 Graphic.setStroke(Color . BLUE ); 75 Graphic.beginPath(); 76 } 77 }); 78 Sky.setOnAction(new EventHandler<ActionEvent>() { 79 public void handle(ActionEvent Event2) { 80 Graphic.setStroke(Color . SKYBLUE ); 81 Graphic.beginPath(); 82 } 83 }); 84 Yellow.setOnAction(new EventHandler<ActionEvent>() { 85 public void handle(ActionEvent Event3) { 86 Graphic.setStroke(Color . YELLOW ); 87 Graphic.beginPath(); 88 } 89 }); 90 Green.setOnAction(new EventHandler<ActionEvent>() { 91 public void handle(ActionEvent Event4) { 92 Graphic.setStroke(Color . GREEN ); 93 Graphic.beginPath(); 94 } 95 }); 96 Pink.setOnAction(new EventHandler<ActionEvent>() { 97 public void handle(ActionEvent Event5) { 98 Graphic.setStroke(Color . PINK ); 99 Graphic.beginPath(); 100 } 101 }); 102 Orange.setOnAction(new EventHandler<ActionEvent>() { 103 public void handle(ActionEvent Event6) { 104 Graphic.setStroke(Color . ORANGE ); 105 Graphic.beginPath(); 106 } 107 }); 108 clear.setOnAction(new EventHandler<ActionEvent>() { 109 public void handle(ActionEvent Event7) { 110 Graphic.clearRect(0 , 0 , cn.getWidth(), cn.getHeight()); 111 Graphic.beginPath(); 112 } 113 }); 114 HBox hb = new HBox(cn , Black , Brown ,Red , Blue , Sky , Yellow , Green , Pink , Orange , clear ); 115 HBox hb2 = new HBox(num , cha); 116 hb.setAlignment(Pos.TOP_LEFT); 117 hb2.setAlignment(Pos.TOP_RIGHT); 118 myStage.setScene(new Scene(new Group(cn , hb , hb2))); 119 myStage.show(); 120} 121 void mousePressed(MouseEvent Event2) { 122 Graphic.moveTo(Event2.getX(), Event2.getY()); 123} 124 void mouseDragged(MouseEvent Event3) { 125 Graphic.lineTo(Event3.getX(), Event3.getY()); 126 Graphic.stroke(); 127} 128}

試したこと

2つのHBoxの中身を1つのHBoxにまとめた

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

実行環境はjava8です

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

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

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

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

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

guest

回答1

0

ベストアンサー

もうちょっとすっきりできそうですがこんなんですかね?

Java

1HBox hb = new HBox(cn, Black, Brown, Red, Blue, Sky, Yellow, Green, Pink, Orange, clear); 2HBox hb2 = new HBox(num, cha); 3 4BorderPane borderPane = new BorderPane(); 5borderPane.setLeft(hb); 6borderPane.setRight(hb2); 7 8BorderPane BorderPane2 = new BorderPane(new ScrollPane(cn)); 9BorderPane2.setTop(borderPane); 10 11myStage.setScene(new Scene(BorderPane2));

投稿2020/12/16 10:23

TN8001

総合スコア9317

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

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

退会済みユーザー

退会済みユーザー

2020/12/16 11:10

ご回答ありがとうございました! 無事上手く行きました???? 本当にありがとうございます????!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問