Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Graphics2019
import javafx.application.Application;
import javafx.stage.*; // Stage
import javafx.scene.*; // Scene
import javafx.scene.layout.*; // Pane, HBox
import javafx.scene.shape.*; // Rectangle, Circle
import javafx.scene.paint.*; // Color
import javafx.event.*; // MouseEvent
public class ShapeSample extends Application {
@Override
public void start(Stage pstage){
Pane left = new Pane(); // 描画用 Pane コンテナその1
left.setPrefSize(200, 200); // コンテナの大きさ
Pane right = new Pane(); // 描画用 Pane コンテナその2
right.setPrefSize(200, 200);
right.setStyle("-fx-background-color: #87CEEB;"); // 背景色を設定
HBox root = new HBox(left, right); // ルートノード.左にその1,右にその2
drawRectangles(left); // 図形を描画(矩形)
drawCircles(right); // 図形を描画(円)
Scene scene = new Scene(root);
pstage.setTitle("ShapeSample");
pstage.setScene(scene);
pstage.show();
}
// 変数 p が表す Pane 上に矩形を描画
void drawRectangles(Pane p) {
// 矩形その1 (左上のx座標,y座標,幅,高さ)
Rectangle rect1 = new Rectangle(20, 30, 40, 60);
rect1.setStroke(Color.RED); // 線の色
rect1.setStrokeWidth(3); // 線の太さ
rect1.setFill(Color.PINK); // 図形内部の塗りつぶしの色
// 矩形その2
Rectangle rect2 = new Rectangle(100, 100, 50, 50);
rect2.setFill(Color.RED);
// 2つの Rectangle オブジェクトを p にのせる
p.getChildren().addAll(rect1, rect2);
// 矩形その2のイベントハンドラを設定(クリックごとに色が変わる)
rect2.setOnMouseClicked((event) -> {
if(rect2.getFill() == Color.RED) rect2.setFill(Color.BLUE);
else rect2.setFill(Color.RED);
});
}
// 変数 p が表す Pane 上に円を描画
void drawCircles(Pane p) {
// 円 (中心のx座標,y座標,半径)
Circle cir = new Circle(30, 30, 20);
cir.setFill(Color.BLUE); // 図形内部の塗りつぶしの色
// Circle オブジェクトを p にのせる
p.getChildren().addAll(cir);
// イベントハンドラを設定(クリックごとに位置が変わる)
cir.setOnMouseClicked((event) -> {
cir.setCenterX(Math.random() * p.getWidth());
cir.setCenterY(Math.random() * p.getHeight());
});
}
public static void main(String[] args) {
launch(args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.