2017-09-19 18 views
-1

私は最初のjavaFXプログラムを作成しました。これには55個のボタンがあり、押されたボタンのIDを取得して各ボタンのハンドラを作成せずに変数に保存する方法を見つけようとしています。ボタンから名前/ IDを取得

編集:私は8個のGridPaneに合計160個のボタンを記入することができ、すべてのボタンが私に名前を返します。誰かが興味を持っている場合に備えて、私はこのソリューションを追加しました

ありがとうございました。

for(int i = 1; i < 9; i++) { 
     for (int j = 0; j < 5; j++) { 
      for (int k = 0; k < 4; k++) { 
       String buttonText = "" + buttoncounter; 
       Button button = new Button(buttonText); 
       switch(i){ 
        case 1: gp1.add(button, k, j); 
         break; 
        case 2: gp2.add(button, k, j); 
         break; 
        case 3: gp3.add(button, k, j); 
         break; 
        case 4: gp4.add(button, k, j); 
         break; 
        case 5: gp5.add(button, k, j); 
         break; 
        case 6: gp6.add(button, k, j); 
         break; 
        case 7: gp7.add(button, k, j); 
         break; 
        case 8: gp8.add(button, k, j); 
       } 
       button.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
       button.setOnAction(e -> { 
        buttonPressed = Integer.parseInt(buttonText); 
       }); 
       buttoncounter++; 
      } 
     } 
    } 
+2

使っ名は' – nullpointer

+0

ボタンが作成されるとすぐにプログラムが起動します。ボタンがまだ作成されていない場合は、どうすればbutton.getName()でアクセスできますか?申し訳ありませんが、私はこれで新しく、私はまだそれを取得しません。 – Michael95

+1

@nullpointer ['javafx.scene.control.Button']には' name'プロパティはありません(https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Button.html)。 )@ Michael95なぜ 'initialize'メソッドで使われていないボタンを作るのですか? – fabian

答えて

0

FXMLではなくボタンをプログラムで作成する必要があります。そうすれば、あなたは簡単にそれぞれに異なるハンドラを登録したり、など

たとえば、あなたのFXMLファイルで、実行する、IDまたはそのテキストを経由してボタンをルックアップする必要はありません

<TilePane fx:id="buttonPane" /> 
コントローラで

そして:使用するボタン `button.getName()の

public class Controller { 

    @FXML 
    private TilePane buttonPane ; 

    public void initialize() { 
     for (int i = 1 ; i <= 55 ; i++) { 
      String buttonText = "Button "+i ; 
      Button button = new Button(buttonText); 
      buttonPane.getChildren().add(button); 
      button.setOnAction(e -> { 
       // whatever you need here: you know the button pressed is the 
       // one and only button the handler is registered with 
       System.out.println(buttonText + " clicked"); 
      }); 
     } 
    } 

    // ... 
} 
+0

私はこれをアップヴォートするだろうが、残念ながら私はできない。ありがとうございます! – Michael95

関連する問題