2016-08-03 9 views
0

値が空の場合、テーブルビューのセルの背景色を変更したい。私たちを手伝ってくれますか?ありがとう。 以下、私のソースコードの概要ですが、動作しません。テーブルビューのセルの背景を動的に変更する方法

public class Cell extends TextFieldTableCell<Itemtest, String>{ 

    public Cell(StringConverter<String> str){ 
     super(str); 
     this.itemProperty().addListener((obs, oldValue, newValue)->{ 
        if(newValue.isEmpty()) 
         this.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY))); 
     }); 
    } 

    @Override 
    public void updateItem(String item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(empty ? null : getString()); 
     setGraphic(null);   
    } 

    private String getString(){ 
     return getItem() == null ? "" : getItem().toString(); 
    } 

} 
+0

このためにセルを実装する必要はありません。あなたはこれをCSSで完全に行うことができます –

答えて

0

コードでは、項目が""になる場合、背景を色に設定します。アイテムを変更する必要が生じた場合に備えて、変更することはありません。また、項目が""であることは、セルがでないことを意味する。

さらに、項目が変更されたとき、またはセルが空になったときに呼び出されるupdateItemメソッドを既に上書きしています。代わりに背景を更新する必要があります。

public class Cell extends TextFieldTableCell<Itemtest, String>{ 

    public Cell(StringConverter<String> str){ 
     super(str); 
    } 

    @Override 
    public void updateItem(String item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(empty ? null : getString()); 
     setGraphic(null); 

     // is this really the check you want? 
     if (item != null && item.isEmpty()) { 
      this.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY))); 
     } else { 
      // change back to empty background 
      this.setBackground(Background.EMPTY); 
     } 
    } 

    private String getString(){ 
     return getItem() == null ? "" : getItem().toString(); 
    } 

} 
+0

ボタンをクリックすると(値が数値であるか、空でないかを確認するなど)、表のセルの値をいくつかコントロールしたい場合は、セルの背景色を変更しますこれらの制約は尊重されません。これどうやってするの? – Rodja

+0

すべての 'TableCell'は' updateItem'のチェックを行いますか? JavaFX 8 update 60から、 'TableView.refresh()'を使うことができます。 – fabian

+0

'controlButton.setOnAction(ev - > {..});'の内部で 'TableView.refresh()'を使用しています。どうもありがとう。 – Rodja

関連する問題