Canvas canvas = new Canvas(300,240);
GraphicsContext gc = canvas.getGraphicsContext2D();
canvasつくって
キャンバスの2次元のお絵描きセットをよびだして(そのなかに既にnewとかエラーチェックも入っている)
getGraphicsContext2Dの上で「f3」を押してやると中身が見られる。
そこでnewしているのも分かるよ。
実習27、28(25をもとにして作る)---35pまで
黄色だけ幅が広いので多めに消す必要があるらしい
またなんでできたのかわからないけどできた。
--->Exe27.java
package application;
import javafx. application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class EXE27 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage myStage) {
Canvas canvas = new Canvas(300,240);
GraphicsContext gc = canvas.getGraphicsContext2D();
Image myImg1 = new Image("kobito1.gif");
Button dispB = new Button("クリックすると画像出ますよ");
Button dispB2 = new Button("クリックすると画像消えるよ");
dispB.setOnAction((ActionEvent event)->{
gc.drawImage(myImg1, 138, 100);//23*32px
});
dispB2.setOnAction((ActionEvent event)->{
gc.clearRect(138, 100,50,50);//23*32px
});
BorderPane.setAlignment(dispB, Pos.CENTER);
BorderPane.setAlignment(dispB2, Pos.CENTER);
BorderPane pane = new BorderPane();
pane.setStyle("-fx-background-color:lightgray;");
pane.setTop(dispB);
pane.setBottom(dispB2);
pane.setCenter(canvas);
/*
Button[]kobitoB = new Button[3];
kobitoB[0] = new Button("緑色の小人");
kobitoB[1] = new Button("赤色の小人");
kobitoB[2] = new Button("黄色の小人");
Button clearB = new Button("画像を消す");
BorderPane pane = new BorderPane();
pane.setStyle("-fx-background-color:lightgray;");
HBox hbox = new HBox();
//hbox.getChildren().add(kobitoB[0]);
hbox.getChildren().add(kobitoB[0]);
hbox.getChildren().add(kobitoB[1]);
hbox.getChildren().add(kobitoB[2]);
hbox.setAlignment(Pos.CENTER);
BorderPane.setAlignment(clearB, Pos.CENTER);
pane.setTop(hbox);
pane.setBottom(clearB);
*/
Scene scene = new Scene(pane,300,300);
myStage.setTitle("Exe26");
myStage.setScene(scene);
myStage.show();
}
}
実習28
こびとをかいたよーだけでは描画されない
①こびとをかいたよー
②こびとをかいた紙をつくえにのせたよー
これで初めて見られる
2段構えなのだ。
package application;
import javafx. application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx. scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx. stage.Stage;
public class EXE28 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage myStage) {
Canvas canvas = new Canvas(300,240);
GraphicsContext gc = canvas.getGraphicsContext2D();
//小人に関して
Image myImg1 = new Image("kobito1.gif");
Image myImg2 = new Image("kobito2.gif");
Image myImg3 = new Image("kobito3.gif");
//-----------------------------------
//ボタンに関して//
//-----------------------------------
Button[]kobitoB = new Button[3];
kobitoB[0] = new Button("緑色の小人");
kobitoB[1] = new Button("赤色の小人");
kobitoB[2] = new Button("黄色の小人");
Button clearB = new Button("画像を消す");
BorderPane pane = new BorderPane();
pane.setStyle("-fx-background-color:lightgray;");
HBox hbox = new HBox();
/*
//どっちの記述もあり
hbox.getChildren().add(kobitoB[0]);
hbox.getChildren().add(kobitoB[1]);
hbox.getChildren().add(kobitoB[2]);
*/
hbox.getChildren().addAll(kobitoB[0],kobitoB[1],kobitoB[2]);
hbox.setAlignment(Pos.CENTER);
BorderPane.setAlignment(clearB, Pos.CENTER);
pane.setTop(hbox);
pane.setBottom(clearB);
pane.setCenter(canvas);//この行がないとステージに現れない
//-----------------------------------
//関数
kobitoB[0].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB0");
gc.clearRect(138, 100,50,50);//50*50px はみ出した部分を消えるように
gc.drawImage(myImg1, 138, 100);//23*32px
});
kobitoB[1].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB1");
gc.clearRect(138, 100,50,50);
gc.drawImage(myImg2, 138, 100);//23*32px
});
kobitoB[2].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB2");
gc.drawImage(myImg3, 138, 100);//23*32px
});
clearB.setOnAction((ActionEvent event)->{
System.out.println("here is in clear");
gc.clearRect(138, 100,50,50);//50*50px
});
Scene scene = new Scene(pane,300,300);
myStage.setTitle("Exe24");
myStage.setScene(scene);
myStage.show();
}
}
Exe29.java
delete textとかがあるわけじゃないので
set textで""を代入すると消えるよという
かってに一行いつのまにか付いていてそれで別の行でエラーが出ていた
package application;
//import java.awt.Label;
import javafx. application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx. scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx. stage.Stage;
public class EXE29 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage myStage) {
Button dispB = new Button("Click!");
Button clearB = new Button("文字を消去");
Label myLbl = new Label("");
dispB.setOnAction((ActionEvent evnt)->{
myLbl.setText("Clickしましたね");
});
clearB.setOnAction((ActionEvent evnt)->{
myLbl.setText("");
});
BorderPane.setAlignment(dispB, Pos.CENTER);
BorderPane.setAlignment(clearB, Pos.CENTER);
BorderPane pane = new BorderPane();
pane.setStyle("-fx-background-color:lightgray;");
pane.setTop(dispB);
pane.setBottom(clearB);
pane.setCenter(myLbl);
Scene scene = new Scene(pane,300,300);
myStage.setTitle("Exe29");
myStage.setScene(scene);
myStage.show();
/*
Canvas canvas = new Canvas(300,240);
GraphicsContext gc = canvas.getGraphicsContext2D();
//小人に関して
Image myImg1 = new Image("kobito1.gif");
Image myImg2 = new Image("kobito2.gif");
Image myImg3 = new Image("kobito3.gif");
//-----------------------------------
//ボタンに関して//
//-----------------------------------
Button[]kobitoB = new Button[3];
kobitoB[0] = new Button("緑色の小人");
kobitoB[1] = new Button("赤色の小人");
kobitoB[2] = new Button("黄色の小人");
Button clearB = new Button("画像を消す");
BorderPane pane = new BorderPane();
pane.setStyle("-fx-background-color:lightgray;");
HBox hbox = new HBox();
*/
/*
//どっちの記述もあり
hbox.getChildren().add(kobitoB[0]);
hbox.getChildren().add(kobitoB[1]);
hbox.getChildren().add(kobitoB[2]);
*/
/*
hbox.getChildren().addAll(kobitoB[0],kobitoB[1],kobitoB[2]);
hbox.setAlignment(Pos.CENTER);
BorderPane.setAlignment(clearB, Pos.CENTER);
pane.setTop(hbox);
pane.setBottom(clearB);
pane.setCenter(canvas);//この行がないとステージに現れない
//-----------------------------------
//関数
kobitoB[0].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB0");
gc.clearRect(138, 100,50,50);//50*50px はみ出した部分を消えるように
gc.drawImage(myImg1, 138, 100);//23*32px
});
kobitoB[1].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB1");
gc.clearRect(138, 100,50,50);
gc.drawImage(myImg2, 138, 100);//23*32px
});
kobitoB[2].setOnAction((ActionEvent event)->{
System.out.println("here is in lobitoB2");
gc.drawImage(myImg3, 138, 100);//23*32px
});
clearB.setOnAction((ActionEvent event)->{
System.out.println("here is in clear");
gc.clearRect(138, 100,50,50);//50*50px
});
Scene scene = new Scene(pane,300,300);
myStage.setTitle("Exe24");
myStage.setScene(scene);
myStage.show();
*/
}
}
---
実習問題31
クラスBorderPaneの説明書きは幸いすぐ見つかった
https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/layout/BorderPane.html
問題はこのBorderPaneとVboxをどう組み合わせるかにある