質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaFX

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

Java

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

Q&A

解決済

1回答

1939閲覧

ボタンのラベルを交互に表示したい javafx

sakupansakupan

総合スコア5

JavaFX

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

Java

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

1グッド

0クリップ

投稿2020/06/23 06:45

編集2020/06/23 06:55

ボタンをクリックしたときラベルを交互に〇、×と表示させたいのですが、どのようにすればよいか教えていただきたいです。

〇を表示させるところまではできたのですが、二回目以降のクリックで×、〇と交互に表示させる方法がわかりません。

また、〇×を表示させてほかのラベルにクリックを移したとき、すでに〇×を設定したラベルはクリックしても変更できないようにしたいです。

よろしければ回答をよろしくお願いいたします。

java

1import javafx.application.Application; 2import javafx.scene.Scene; 3import javafx.scene.control.*; 4import javafx.scene.layout.*; 5import javafx.stage.Stage; 6 7import javafx.event.ActionEvent; 8import javafx.event.EventHandler; 9 10public class App extends Application { 11 public void start(Stage stage) { 12 13 stage.setTitle("App"); 14 15 Button bt1 = new Button(); 16 Button bt2 = new Button(); 17 Button bt3 = new Button(); 18 Button bt4 = new Button(); 19 Button bt5 = new Button(); 20 Button bt6 = new Button(); 21 Button bt7 = new Button(); 22 Button bt8 = new Button(); 23 Button bt9 = new Button(); 24 bt1.setPrefSize(50, 50); 25 bt2.setPrefSize(50, 50); 26 bt3.setPrefSize(50, 50); 27 bt4.setPrefSize(50, 50); 28 bt5.setPrefSize(50, 50); 29 bt6.setPrefSize(50, 50); 30 bt7.setPrefSize(50, 50); 31 bt8.setPrefSize(50, 50); 32 bt9.setPrefSize(50, 50); 33 34 GridPane root = new GridPane(); 35 GridPane.setConstraints(bt1, 0, 0); 36 GridPane.setConstraints(bt2, 1, 0); 37 GridPane.setConstraints(bt3, 2, 0); 38 GridPane.setConstraints(bt4, 0, 1); 39 GridPane.setConstraints(bt5, 1, 1); 40 GridPane.setConstraints(bt6, 2, 1); 41 GridPane.setConstraints(bt7, 0, 2); 42 GridPane.setConstraints(bt8, 1, 2); 43 GridPane.setConstraints(bt9, 2, 2); 44 root.getChildren().addAll(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9); 45 46 EventHandler <ActionEvent> eh1 = new EventHandler <ActionEvent> () { 47 public void handle(ActionEvent event) { 48 Button b = (Button) event.getSource(); 49 if (b == bt1) { 50 b.setText("〇"); 51 52 } else if (b == bt2) { 53 b.setText("〇"); 54 55 } else if (b == bt3) { 56 b.setText("〇"); 57 58 } else if (b == bt4) { 59 b.setText("〇"); 60 61 } else if (b == bt5) { 62 b.setText("〇"); 63 64 } else if (b == bt6) { 65 b.setText("〇"); 66 67 } else if (b == bt7) { 68 b.setText("〇"); 69 70 } else if (b == bt8) { 71 b.setText("〇"); 72 73 } else if (b == bt9) { 74 b.setText("〇"); 75 } 76 } 77 }; 78 79 bt1.setOnAction(eh1); 80 bt2.setOnAction(eh1); 81 bt3.setOnAction(eh1); 82 bt4.setOnAction(eh1); 83 bt5.setOnAction(eh1); 84 bt6.setOnAction(eh1); 85 bt7.setOnAction(eh1); 86 bt8.setOnAction(eh1); 87 bt9.setOnAction(eh1); 88 89 Scene scene = new Scene(root); 90 stage.setScene(scene); 91 stage.show(); 92 } 93 94 public static void main(String[] args) { 95 launch(); 96 } 97}
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

〇×ゲームですね。
今の手番を表すフィールド(メンバー変数)を作って、入れ替えればいいでしょう。

eh1のフィールドでいいのかAppのフィールドのほうがいいのかは、sakupansakupanさんにお任せします。

java

1EventHandler<ActionEvent> eh1 = new EventHandler<ActionEvent>() { 2 String hand = "〇"; // 今の手番 3 4 @Override 5 public void handle(ActionEvent event) { 6 Button b = (Button) event.getSource(); 7 if (b.getText().equals("")) { // ボタンのテキストが空ならば... 8 b.setText(hand); 9 if (hand.equals("〇")) { // 今の手番が〇ならば... 10 hand = "×"; 11 } else { 12 hand = "〇"; 13 } 14 } 15 } 16};

投稿2020/06/23 09:11

TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問