2017-12-04 18 views
0

私はいくつかのレコードを持つTableViewを持っていて、プロパティに応じてセルの背景色を設定したいとします(たとえば、ID == 5の場合は色を設定します)。JavaFX TableView CellFactory

基本的には動作します。

See Image 1

public class CustomCell extends TableCell<Person, String> { 

@Override 
protected void updateItem(String item, boolean empty){ 
    super.updateItem(item, empty); 

    if (item != null && !empty){ 

     setText(item); 

     if (getTableRow() != null && getTableRow().getItem() != null){ 
      Person p = (Person) getTableRow().getItem(); 

      if (p.getId() == 5){ 
       setStyle("-fx-background-color: #CBDBD7;"); 
      } 
     } 
    }else{ 
     setText(null); 
    } 
} 

しかし、私は上にスクロールし、数回上下を開始したとき、 異なる細胞が同様に背景色を取得します。 これは私が望む動作ではありません。

Wrong cells with background color

私はOpenJDKのとMacOSの10.13.1/Javaの1.8.0_151 とDebianでこれをテストしました。

https://github.com/glueckandi/test_fx.git

私が間違って何をしているのですか?

+2

あなたの基準に一致しない他の項目がセルに配置されているときには、背景色を削除していません。 – fabian

答えて

0

nullまたは""空の文字列にスタイルを設定してみてください。

if (p.getId() == 5) 
{ 
    setStyle("-fx-background-color: #CBDBD7;");  
} 
else 
{ 
    setStyle(""); 
} 

else 
{ 
    setText(null); 
    setStyle(""); 
} 
関連する問題