忍者ブログ

からすまる日誌

20191219pm02 3つのこびとを出す

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20191219pm02 3つのこびとを出す

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をどう組み合わせるかにある
 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30