2016-08-05 12 views
0

だから私は一種のホイールフォーチュンゲームやハングマンを作ろうとしています。アルファベットを表す33個のボタン、1個のボタン= 1個の文字があります。ユーザーが1つを押すと、「消えてしまう」(無効になり、不可視になります)。 SceneBuilder内のすべてのボタンを作成してFXMLファイルに配置しました。ボタンを押すと「消える」

実際にはどうすればいいですか?私は最初のボタンのためにこのメソッドを作成しました。しかし、最初のボタンを押しても何のボタンが押されても正しく動作しません。各ボタンに33種類のメソッドを書き込むのが簡単な方法はありますか?

public void letterChosen (ActionEvent evt) { 
    b1.setDisable(true); 
    b1.setVisible(false); 
+0

b1の代わりに、ActionEventオブジェクトのgetSourceメソッドを試してください。これは、あなたが探しているボタンになることを願ってイベントのソースを返します – VortixDev

+0

ありがとう、それは今動作します! – Felix

答えて

2

クリックされたButtonActionEventsourceとして利用可能です。

さらにuserDataは、場合にあなたがButtonの他のプロパティからボタンのクリックを処理するために必要な情報を得ることができない、Buttonに取り付けることができる:

public void letterChosen(ActionEvent event) { 
    Button source = (Button) event.getSource(); 
    source.setVisible(false); 
    System.out.println("pick: "+source.getUserData()); 
} 

FXML

<Button onAction="#letterChosen" userData="a" text="A"/> 
<Button onAction="#letterChosen" userData="b" text="B"/> 

注こと表示されていないNodeが相互作用できないため、表示されていないNodeを無効にする必要はありません。無効化されたButtonは、デフォルトで「薄れている」と表示されますが、別の方法で表示することもできます。 CSSを使って

関連する問題