2017-02-03 4 views
0

私はFirstFxml.fxmlファイルとそのコントローラーをFirstFxmlControllerとして持っています。 sizeOfList(現在は4と仮定)に応じてカスタムランタイムボタンを作成する必要があります。私は次のコードを作成し、そのアクションを追加しました。しかし、それは最後のボタンにこのアクションを適用することができません。最後のボタン(Click Me 4)をクリックして、それが機能していないsetOnActionを意味します。私はラムダとハンドラでこれを試しましたが、同じ問題もありました。次のコードのjavafx問題はありますか?この問題の変更を提案します。すべてのボタンに同じアクションを追加しますが、アクションはJavafxの最後のボタンには適用されません

パブリッククラスFirstFxmlControllerは初期化可能{

@FXML 
public VBox centerVBox; 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    //Adding multiple buttons 
    int sizeOfList = 5; 
    StackPane stack[] = new StackPane[sizeOfList]; 
    Button b[] = new Button[sizeOfList]; 

    for(int i = 1; i<sizeOfList; i++){ 
      b[i] = new Button("Click me "+i); 

     b[i].setOnAction(new EventHandler<ActionEvent>() { 
      @Override public void handle(ActionEvent e) { 
       System.out.println("Clicked"); 
      } 
     }); 


     stack[i] = new StackPane(); 
     stack[i].setMargin(b[i], new Insets(20, 0, 0, 0)); 
     stack[i].getChildren().add(b[i]); 
     centerVBox.getChildren().add(stack[i]); 
    } 

} 
+0

Javaの配列インデックスは0から始まります。ループは 'for(int i = 0; i RubioRic

+0

でなければなりません。あなたは 'sizeOfList = 4;'を持っていなければなりませんし、0の 'int i = 0'からループを開始する必要があります。なぜなら4つの要素を5つの長い配列に格納するので、4番目のButtonは機能しません。 – DVarga

+0

申し訳ありませんが、私の間違いは、vboxが境界枠の中央にあり、この境界枠のサイズが固定されているためです。だから何が起こるのかは、最後のボタンの境界線オーバーライドのボトム要素です。そのため、この最後のボタンは機能しません。問題が解決しました。メイン画面のサイズを大きくするだけです。あなたの即刻のリプレイと提案のおかげでおかげさまで –

答えて

1

このボーダー・ペインが固定されたためVBOXが境界ペインとサイズの中央部分にあるとして、それは、私のミスでした申し訳ありませんが実装されています。だから何が起こるのかは、最後のボタンの境界線オーバーライドのボトム要素です。そのため、この最後のボタンは機能しません。問題が解決しました。メイン画面のサイズを大きくするだけです。あなたの即刻のリプレイと提案のおかげでおかげさまで

関連する問題