2017-08-02 18 views
1

私は、私がSceneBuilderを使用する情報としてtableViewにアイテムを設定しようとすると問題が発生しました。JavaFX - TableView - setItem:not working

Main.java:

public class Main extends Application { 
private static Stage theStage; 
public static void main(String[] args) throws Exception { 
    testDatas(); 
    launch(); 
} 

public void start(Stage stage) throws IOException { 
    theStage = stage; 
    Group acteur = new Group(); 
    acteur.getChildren().add(
    FXMLLoader.load(getClass().getResource("views/options.fxml"))); 
    theStage.setTitle("Where's My Money");  
    Scene scene = new Scene(acteur, 1280.0, 720.0); 
    theStage.setScene(scene); 
    theStage.show(); 
} 

public static void initialize() { 
    launch(); 
} 

public static void setScene(Group acteur, String titre) throws IOException { 
    Scene scene = new Scene(acteur); 

    theStage.setTitle(titre); 
    theStage.setScene(scene); 
    theStage.show(); 
} 
} 

ビュー/ ControllerOptions.class

public class ControllerOptions implements Initializable{ 

@FXML private TableView<?> TV_currency; 
@FXML private TableColumn<Currency, String> TC_name; 
@FXML private TableColumn<Currency, Double> TC_value; 
private ObservableList<Currency> currencies = FXCollections.observableArrayList(); 

//FUNCTIONS 
@Override 
public void initialize(URL location, ResourceBundle rb){ 
    //initialisation Table Currencies 
    for (Currency currency : Datas.getInstance().getCurrencies()) { 
     currencies.add(currency); 
    }  
    TC_name.setCellValueFactory(new PropertyValueFactory<Currency, String>("name")); 
    TC_value.setCellValueFactory(new PropertyValueFactory<Currency, Double>("value")); 
    TV_currency.setItems(currencies); // <= HERE'S THE ERROR 
} 
} 

モデル/ Currency.class

public class Currency { 

private String name; 
private double value; 

public Currency(String name, double value) { 
    setName(name); 
    setValue(value); 
} 

public void setName(String name) { 
    this.name = name; 
} 
public String getName() { 
    return name; 
} 

public void setValue(double value) { 
    this.value = value; 
} 
public double getValue() { 
    return value; 
} 
} 

私はこのエラーしました: 方法をsetItems (ObservableList)は、TableView型ではargumeには適用されませんnts(ObservableList)

あなたが私を助けることができれば、私は非常に感謝しています。事前

+0

に 'TV_currency'は何ですか?あなたが投稿したコードには定義されていません。 –

+0

私は悪いですが、私はここに入れていませんでしたが、ソースコードに入っています。私はこれを編集します。ありがとう –

答えて

1

おかげであなたは

private ObservableList<Currency> currencies ; 

として正しくバッキング・データを宣言していますが、ワイルドカードを使用してテーブルを宣言:

@FXML private TableView<?> TV_currency; 

その結果、種類は時に一致していません。テーブル内の項目を設定しようとします。

変更テーブルの宣言

@FXML private TableView<Currency> TV_currency; 
+1

最も簡単な問題は常に解決するのが最も難しいです... –

関連する問題