2016-04-27 15 views
1

javafxアプリケーションで表示したいパラメータが12個あります。これらのパラメータをレンダリングするためにTableViewを選択するだけです。私はそのアプローチを使用してい一般的なオブジェクトのプロパティでTableViewを使用する

...など電気ショック療法StringParameter、IntegerParameter、LongParameter、BooleanParameter、などの複数のサブクラスを持っていることをここ

public abstract class AbstractParameter<T> { 

    private String myKey; 
    private ObjectProperty<T> myValue = new SimpleObjectProperty<T>() 
    private boolean constantValue; 


    public AbstractParameter<T>(){ 
      //... 
    } 

    ObjectProperty<T> property(){ 
     return property; 
    } 

} 

注:ここでは

は、どのようなパラメータは次のように見える学位論文でありますparamsの一部が定義されているので、/実行時に更新さ

今ここに私のParametersUIControllerある

public Class ParametersUiController { 

@FXML 
private TableView<AbstractParameter<?>> paramsTable; 
@FXML 
private TableColumn<AbstractParameter<?>, String> paramKeyCol; 
@FXML 
private TableColumn<AbstractParameter<?>, String> paramValueCol; 
@FXML 
private TableColumn<AbstractParameter<?>, Boolean> paramConstantValueCol; 


private ObservableList<AbstractParameter<?>> paramsData = FXCollections.observableArrayList(); 

/** 
* Just add some sample data in the constructor. 
*/ 
public PersonTableController() { 
    /* getting a list of params for a service 
    the params are defined in list 
    */ 
    for(AbstractParameter<?> param : rawData) 
     paramsData.add(param); 
    } 

/* I cast the value type to string always */ 

pValueCol.setCellValueFactory(new Callback<CellDataFeatures<AbstractParameter<?>, String>, ObservableValue<String>>() { 
     public ObservableValue<String> call(CellDataFeatures<AbstractParameter<?>, String> param) { 
      return new SimpleStringProperty(param.getValue().property().get().toString()); 
     } 
     }); 

} 

実行時に文字列で毎回定義されたパラメータをキャストせずにジェネリック型Tを表示する他の適切な方法はありますか?

pValueCol.setCellValueFactory(new PropertyValueFactory("generic")); 

をし、あなたのモデルでは、このようなメソッドを作成します:

+0

問題は何ですか? –

+0

質問をより具体的かつ明確に編集しました –

答えて

1

あなたがこれを使用することができます

ObjectProperty<T> genericProperty(){ 
     return property; 
} 

genericPropertyという名前のモデル内のメソッドのための文new PropertyValueFactory("generic")表情。ラップされた汎用値をObjectProperty<T>に戻すことができます。

関連する問題