今まで,テキストフィールドを用いて入力欄を作り数値をプログラムが受け取れるようにしました.
今回は別のコントロール「ボタン」を利用するプログラムを作ってみましょう.
画面に2つのボタンを表示し,1つは押すと文字列が表示され,もう1つは表示が消えるプログラムを作ってみましょう.
/************************************************** Button **************************************************/ import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.VBox; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.scene.control.Button; public class FirstButton extends Application{ public static void main(String[] args) { launch(args); } //ボタンの作成 Button btn1 = new Button("表示"); Button btn2 = new Button("消去"); Label label = new Label(); @Override public void start(Stage stage) throws Exception { stage.setTitle("Application FirstButton"); VBox root = new VBox(); root.setAlignment(Pos.CENTER); root.setPadding(new Insets(10,10,10,10)); root.setSpacing(10.0); HBox pane = new HBox(); pane.setAlignment(Pos.CENTER); pane.setPadding(new Insets(10,10,10,10)); pane.setSpacing(5.0); pane.getChildren().addAll(btn1,btn2); //ボタンを押した時のイベント処理 btn1.setOnAction(event -> dispText()); btn2.setOnAction(event -> clrText()); root.getChildren().addAll(label,pane); Scene scene = new Scene(root,200,100); stage.setScene(scene); stage.show(); } //dispTextメソッドの定義 private void dispText() { label.setText("文字が表示されました!"); } //clrTextメソッドの定義 private void clrText() { label.setText(""); } }
人間とPCがジャンケンするプログラムを作ってみましょう.クラス名は「Ex09_1」とします.
btn1.setOnAction(event -> dispText("disp")); btn2.setOnAction(event -> dispText("clr"));のように「引数」をつけて呼び出します.そして,メソッドの定義を引数を受け取るように記述します.引数を数値にすることもできます.
private void dispText(String s){
switch(s){
case "disp":
label.setText("文字が表示されました");
break;
case "clr":
label.setText("");
break;
}
}
private void dispText(String s){
if(s.equals("disp")){
label.setText("文字が表示されました");
else{
label.setText("");
}
}
つぎのようにすると,0から2までの整数の乱数を発生し,変数「y」に入れます(変数名は何でも良い,各自設定する).この数値を「グー,チョキ,パー」に対応させます.同時に,人間の「手」も数値化して変数(例えば x )に代入しておきます.
y = (int)(Math.random()*3);
記述する場所は,人間の手が決まった時にだけ実行したいのでイベント処理で呼び出されるメソッドの中が良いでしょう.
ヒント:人間の手を表す変数をx,コンピューターの手をyとし,つぎのような評価式を考えると,じゃんけんの勝敗を数値的に評価できる.(参考:switch文)
(x-y+3)%3
「大」,「中」,「小」の3つのボタンと,光の3原色(赤,緑,青)それぞれに対応する整数(0から255まで)を入力する3つの入力欄を作り,どれかのボタンを押すと,ボタンの表示に対応した大きさの文字が,入力した整数の組合せで決まる色で表示されるプログラムを作りましょう.クリアを押したときは消去されるようにします.クラス名は「Ex09_2」とします.
色の設定は,CSSで「-fx-text-fill:rgb(赤の値,緑の値,青の値);」をそれぞれの値を「0〜255」の整数によって指定します.これを以前使用した「label.setStyle("CSSで設定")」を使って設定します.