2016-11-01 8 views
1

Iは、以下のコードを有する:TableViewで負の値とゼロの値を無視する方法はありますか?

costCol_.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getCost())); 
table_.getItems().addAll(SomeEnumType.values()); 



@FXML 
private TableView<SomeEnumType> table_; 
@FXML 
private TableColumn<7, Number> costCol_; 

costColのいくつかの値が(SomeEnumType.getCost()から)現在0/-1であるとすることができるが、それらは、0又は-1として示されています。 空のセルではなく0として表示したくありません。出来ますか? SimpleIntegerBaseを確認しましたが、私が理解したところでは、メソッドから返される値はintです。

私はタイプをStringに変換せずにこれを行うことは可能ですか?

ありがとうございます。

+0

どのように '負でSomeEnumType'ができ、あるいは、あなたが否定的に何を意味するのですか? –

+0

SomeEnumTypeには、intを返すgetCost()メソッドがあります。これは私の心配です。申し訳ありません。 – twenty04

答えて

2

値の表示方法を変更する(既存のセル値の工場に加えて)セルファクトリーを使用します。

costCol.setCellFactory(tc -> new TableCell<SomeEnumType, Number>() { 
    @Override 
    protected void updateItem(Number item, boolean empty) { 
     super.updateItem(item, empty) ; 
     if (empty) { 
      setText(null); 
     } else { 
      int value = item.intValue(); 
      if (value <= 0) { 
       setText(""); 
      } else { 
       setText(Integer.toString(value)); 
      } 
     } 
    } 
}); 
関連する問題