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

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

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

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

Java

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

Q&A

0回答

1659閲覧

Java FXで、複数の図形を描写した後、ドラッグアンドドロップで動かす

kairi.sakusaku

総合スコア6

JavaFX

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

Java

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

0グッド

0クリップ

投稿2018/08/28 01:25

編集2018/08/28 03:10

Java FXで、複数の図形を描写した後、ドラッグアンドドロップで動かす

というのを実現しようと思っているのですが。
どの図形をクリックしたかを管理する方法で悩んでいます。

該当のソースコード

package b012.libro;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.;
import javafx.scene.layout.
;
import javafx.scene.shape.*;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.ImageCursor;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import java.io.File;

public class App extends Application {
Color cc = Color.YELLOW;
String Stb="Set Total Bolts:";
String Colorname ="きいろ";

Label label; int Boltno; int[] Boltx=new int[1000]; int[] Bolty=new int[1000]; Path[] p = new Path[1000]; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { label = new Label( Stb + Boltno+ " " + Colorname+ "/"); BorderPane root = new BorderPane(); String uri = new File("img/cursor.png").toURI().toString(); Image img = new Image( uri ); ImageCursor cursor = new ImageCursor( img , img.getWidth() / 2 , img.getHeight() ); root.setTop(label); Scene scene = new Scene(root,300,300); scene.setOnMouseClicked(event -> CreateBolt(root,event)); scene.setOnKeyPressed(event -> change(event)); scene.setCursor( cursor ); stage.setScene(scene); stage.setTitle("B012 TEST Ver0.5"); stage.show(); } public void Totalno(int xx,int yy){ String msg = Stb + Boltno+ " " + Colorname + "/" + "x:" + xx + "," + "y:" + yy; label.setText(msg); } public void CreateBolt(Pane root,MouseEvent event){ int x = (int)event.getX(); int y = (int)event.getY(); for(int i=0; i<Boltno; i++) { label.setText("set:"+i+ "x:" + Boltx[i] + "," + "y:" + Bolty[i]); if ( (Boltx[i]>x-20 && Boltx[i]<x+20) && (Bolty[i]>y-10 && Bolty[i]<y+10) ) { label.setText("Already set:"+i); return; } } Boltx[Boltno]=x; Bolty[Boltno]=y; Boltno++; int p[B]=Boltno; //Totalno(x,y); p[B] = new p(); MoveTo b00 = new MoveTo(x-20,y+0); p[B].getElements().add(b00); p[B]To b01 = new LineTo(x-10,y-10); path.getElements().add(b01); LineTo b02 = new LineTo(x+10,y-10); path.getElements().add(b02); LineTo b03 = new LineTo(x+20,y+0); p[B].getElements().add(b03); LineTo b04 = new LineTo(x+10,y+10); p[B].getElements().add(b04); LineTo b05 = new LineTo(x-10,y+10); p[B].getElements().add(b05); p[B].getElements().add(new ClosePath()); p[B].setFill(cc); p[B].setStroke(Color.BLACK); p[B].setStrokeWidth(2); root.getChildren().add(p[B]); } public void change(KeyEvent event){ KeyCode code = event.getCode(); switch(code){ case F1: cc = Color.RED; Colorname ="あか"; break; case F2: cc = Color.BLUE; Colorname ="あお"; break; case F3: cc = Color.YELLOW; Colorname ="きいろ"; break; default: break; } //Totalno(0,0); }

}

### 実現してたこと *クリックすると六角形を表示。各図形の座標は配列で管理。 *ファンクションキーのF1-F3で色分け。 *配列をForで参照、同じ位置に図形が配置されないようにする。 (既に置かれてる場合Already set:図形番号 が表示) ### わからないこと transformを使う前提でpathの配列化?をしてみたのですが、エラー多発・。 ### 補足情報(FW/ツールのバージョンなど) Java10.0.2 Eclipse4.7.3a(JavaFXプラグイン導入済)で作成しています。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問