2016-05-08 54 views
0

私の貧しい英語のためにまず第一に私のお詫び申し上げます。observableListに格納されている複数の要素(私の場合はGridpane型)にアクセスするには?

私は5つのGridpaneを持っていますが、状況によっては無効/有効に設定する必要があります。 ObservableListに格納しようとしましたが、apply .setDisableメソッドがエラーをスローします。なぜなら、インデックスを呼び出すときに何の戻り値があり、代わりにnullがグリッドペインであるかをチェックするからです。私は

を:(助けてくださいここでは、コードです:

@FXML 
private GridPane fila1; 
@FXML 
private GridPane fila2; 
@FXML 
private GridPane fila3; 
@FXML 
private GridPane fila4; 
@FXML 
private GridPane fila5; 

@FXML 
ObservableList<GridPane> mesas = FXCollections.observableArrayList(fila1,fila2,fila3,fila4,fila5); 


for(int i=0;i<temp.getEmpleados().size();i++) { 
      mesas.get(i).setDisable(false); 
} 

答えて

1

あなたがフィールド宣言に値を代入するのでObservableListは、初期に作成されますがGridPane sは、後に注入された時点では。

ObservableList<GridPane> mesas = FXCollections.observableArrayList(fila1,fila2,fila3,fila4,fila5); 

が実行され、フィールドはまだnullの初期値を含んでいます。

へ注入されたGridPaneのリストを取得するには、の後にObservableListを作成/割り当てる必要があります。GridPaneを注入しました。 initialize方法の場合:

@FXML 
ObservableList<GridPane> mesas; 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    mesas = FXCollections.observableArrayList(fila1,fila2,fila3,fila4,fila5); 
} 
+0

ありがとうございます、これ以上の質問はありませんか?私はちょうど "initialize()"を使用しているので (URLロケーション、ResourceBundleリソース) – juakiz

+0

'initialize()'を使うのも良いですが、私は個人的に(打ち切りのコンパイル時間チェックのための) theredoreは 'Initializable'インターフェースを使います。 – fabian

関連する問題