2016-03-23 11 views
0

基本的な質問があるようですが、解決方法を見つけ出すことはできません。私はこの怒りモードにあり、何も働かないように見えて集中力が衰えています。JavaFX Javaの引数の文字列をコントローラーからコントローラーに渡す

私はこのUserControllerで自分のUserControllerを持っています。私は完璧に動作するComboBoxを持っています。私のMuseumControllerのメソッドにString引数としてこのコンボボックスから選択した都市を渡す必要があります。

Labelでは動作しますが、MuseumControllerで使用する方法では動作しません。ここで

がUserControllerでから、関連するコードです:私のMuseumControllerからラベルに正常値を渡して、このUserControllerでイムで

public void SearchM(ActionEvent event) { 

    try { 
      ((Node) event.getSource()).getScene().getWindow().hide(); 

      Stage primaryStage = new Stage(); 

      FXMLLoader loader = new FXMLLoader(); 

      Pane root = loader.load(getClass().getResource("/application/M_in_City.fxml").openStream()); 

      MuseenController museenController = (MuseenController) loader.getController(); 
      museenController.GetCityName(txtComboboxStadt.getValue()); 
      //museenController.GetOnlyCityName(txtComboboxStadt.getValue()); 
      Scene scene = new Scene(root); 
      scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
      primaryStage.setScene(scene); 
      primaryStage.show(); 

    } catch (IOException e) { 

     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

、私の最初のアイデアは、なぜ、すでにので、ラベル(ラベルを取ることではない、でした必要な都市を表示します)、そこから都市を取得すると、都市名の更新されたものではなく、デフォルトのラベルのみが表示されるため、機能しませんでした。

@FXML 
private Label MuseenInStadtLbl; 

@FXML 
private ListView<String> ListViewMuseen; 

@Override 
public void initialize(URL location, ResourceBundle resources) {  
    museenInStadtModel.FillListViewStadt(ListViewMuseen, "Düsseldorf"); 
} 

//public String only_cityname; 
/* 
public String GetOnlyCityName(String city) { 
    return city; 
} 
*/ 

public void GetCityName(String city) { 
    //only_cityname = city; 
    MuseenInStadtLbl.setText("Museen in der Stadt: " + city); 
} 

は、だから私は「Düssedorfを交換する必要があります:私はObserverListと文字列引数(CITY)を必要とする機能を持っている

MuseumControllerは、関数が、私は、マニュアルの文字列でそれを試してみました、完璧に動作します"コンボボックスからの値またはメソッドGetCityNameの都市引数

私は、文字列をnullにする設定になった文字列だけを渡してみましたが、それは初期化メソッドのためです。

このスレッドは悲しげにdidntの助け: Similar Problem on StackOverFlow

私は、関連するコードを提供するためにしようと試み、FillListViewStadt方法は完璧に動作します。もし私が何かを見逃して、私は更新します。

要約:私はどのように文字列の引数としてuserControllerのコンボボックスから選択した値をmuseencontrollerから関数 FillListViewStadtに初期化し、手書きのenetred "Düsseldorf"をそれに置き換えますか?

+1

'initialize()'メソッドは 'loader.load()'で呼び出されます。そのため、パラメータを渡す機会があります。正しい方法は、(GetCityName()で行ったように)別のメソッドを作成してそこにパラメータを渡すことです。 –

+0

@ Moh-Awありがとう、それです。全体のメソッドを初期化からGetCityNameに移動しました。これはうまくいきましたが、私はすでにこのソリューションの周りで踊っていましたが、怒りのモードでは多くの簡単なことを忘れてしまいます。 ;)あなたが回答を作成した場合、私はそれを受け入れます。 – Roman

答えて

2

loader.load()のメソッドは、パラメータを渡す機会を得る前にloader.load()で呼び出されます。正しい方法は、(GetCityName()と同じように)別のメソッドを作成し、そこにパラメータを渡すことです。

関連する問題