2016-03-18 7 views
0

Я хотел бы обновить цвет строк TableView в зависимости от данных в ячейке, поэтому я использовал pseeudoClass для ссылки на стиль в Css. строки покрашены, как я хотел, но он потерял выделение и эффект наведения мыши, теперь у меня цветные строки без указания выбранной строки. Вот мой код:JavaFX TableView Rows color

PseudoClass myPseudoClass = PseudoClass.getPseudoClass("dtta_dep"); 
    PseudoClass myPseudoClass1 = PseudoClass.getPseudoClass("dtta_dest"); 
    fplTableView.setRowFactory(tv -> new TableRow<FlightPlan>() { 
     @Override 
     public void updateItem(FlightPlan item, boolean empty) { 
      super.updateItem(item, empty); 

       this.setFocused(true); 
       this.setHover(true); 
       System.out.println("myPseudoClass = "+myPseudoClass.getPseudoClassName()); 
       pseudoClassStateChanged(myPseudoClass, (! empty) && item.Dep_aerodomProperty().get().equalsIgnoreCase("DTTA")); 
       pseudoClassStateChanged(myPseudoClass1, (! empty) && item.Dest_aerodomProperty().get().equalsIgnoreCase("DTTA")); 


     } 
    }); 
     getData(); 

     for (int i = 0; i < listF.size(); i++) { 
      System.out.println(listF.get(i).Dep_aerodomProperty().get()); 
     } 
     selectWithService(); 

    }); 

CSS-файл:

 .table-row-cell { 
    -fx-background-color: linear-gradient(white 0%, white 90%, #e0e0e0 90%); 
} 
.table-row-cell:selected { 
    -fx-background-color: linear-gradient(#95caff 0%, #77acff 90%, #e0e0e0 90%); 
} 

    .table-row-cell:dtta_dep .table-cell { 
     -fx-text-fill: red; 
     -fx-background-color:beige; 
    } 
    .table-row-cell:dtta_dest .table-cell { 
     -fx-text-fill: blue; 
     -fx-background-color:greenyellow; 
    } 

ответ

0

Использование -fx-background вместо -fx-background-color на стол-пропашных ячейки, чтобы установить невыбранную фон. Вы можете использовать -fx-selection-bar для установки выбранного цвета. Текстовая заливка определяется в ячейке таблицы с цветом -fx-text-background-color (т. Е. Текст заполняется для текста над -fx-background), поэтому вы можете переопределять те, которые заполняются в ячейках.

.table-row-cell { 
    -fx-background: linear-gradient(white 0%, white 90%, #e0e0e0 90%); 
    -fx-selection-bar: linear-gradient(#95caff 0%, #77acff 90%, #e0e0e0 90%); 
} 

.table-row-cell:dtta_dep { 
    -fx-text-background-color: red; 
    -fx-background: beige; 
} 
.table-row-cell:dtta_dest { 
    -fx-text-background-color: blue; 
    -fx-background:greenyellow; 
} 
+0

Большое спасибо, это нормально с -fx-background вместо -fx-background-color. Я пробовал много способов без успеха, но теперь все в порядке. –