質問編集履歴

1 疑問点追加

sobue

sobue score 218

2017/07/04 20:10  投稿

javaFXでのイベント発生時の描画について
```java
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Main extends Application {
   @Override
   public void start(Stage primaryStage) {
       try {
           Pane root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
           Scene scene = new Scene(root,400,400);
           scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
           primaryStage.setScene(scene);
           primaryStage.setTitle("テスト");
           primaryStage.show();
       } catch(Exception e) {
           e.printStackTrace();
       }
   }
   public static void main(String[] args) {
       launch(args);
   }
}
```
```java
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class SampleController implements Initializable {
   @FXML Button button1;
   @FXML Label label1;
   @FXML Canvas canvas1;
   @Override
   public void initialize(URL location, ResourceBundle resources) {
       // TODO 自動生成されたメソッド・スタブ
       button1.setOnAction((ActionEvent) -> {
           System.out.println("テスト");
           label1.setText("ラベルのテスト");
           GraphicsContext gc = canvas1.getGraphicsContext2D();
           gc.setLineWidth(2.0);
       });
   }
}
```
```FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.canvas.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity"
   minHeight="-Infinity" minWidth="-Infinity" prefHeight="139.0"
   prefWidth="259.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
   fx:controller="application.SampleController">
   <top>
       <Label fx:id="label1" text="Label" BorderPane.alignment="CENTER" />
   </top>
   <bottom>
       <Button fx:id="button1" mnemonicParsing="false" text="Button"
           BorderPane.alignment="CENTER" />
   </bottom>
   <center>
       <Canvas fx:id="canvas1" height="200.0" width="200.0"
           BorderPane.alignment="CENTER" />
   </center>
</BorderPane>
```
上記のコードでフォーム上に線を引きたいのですがどのようにしたらいいのでしょうか?
上記のコードでフォーム上に線を引きたいのですがどのようにしたらいいのでしょうか?
初めから表示させる方法とイベントで表示させる方法2種類お願いいたします。
  • Java

    20140 questions

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

  • JavaScript

    27920 questions

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

  • JavaFX

    565 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る