Я не эксперт.Я не знаю, есть ли способ ответить на ваш вопрос, используя ваш точный метод (используя inlinecss и устанавливая backgroundColor, не затрагивая выбранную строку backgroundColor).Мое решение использует таблицу стилей и устанавливает независимый backgroundColor для выбранного состояния строки.
class Style : Stylesheet() {
companion object {
val pass by cssclass()
val fail by cssclass()
}
init {
pass{
backgroundColor += c("#4CAF50", .5)
and(selected){
backgroundColor += c("#0096C9", .5)
}
}
fail{
backgroundColor += c("#FF5722", .5)
and(selected){
backgroundColor += c("#0096C9", .5)
}
}
}
}
Теперь вы используете правила «пройти» и «потерпеть неудачу».Вместо:
this.tableRow.style(append = true) { backgroundColor += c("#4CAF50", .5) }
Вы используете:
this.tableRow.addClass(Style.pass)
Вместо:
this.tableRow.style(append = true) { backgroundColor += c("#FF5722", .5) }
Вы используете:
this.tableRow.addClass(Style.fail)
Запомнить васнеобходимо добавить Style :: class в конструктор приложения.
Редактировать:
Использование toggleClass, как предложил Эдвин Сайз.вместо:
column("Test Execution Status", Test::statusProperty).cellFormat {
text = it.toString()
if (it == TestStatus.PASS)
this.tableRow.addClass(Style.pass)
else if (it == TestStatus.FAIL)
this.tableRow.addClass(Style.fail)
}
Вы используете:
column("Test Execution Status", Test::statusProperty).cellFormat {
text = it.toString()
this.tableRow.toggleClass(Style.fail,it == TestStatus.FAIL)
this.tableRow.toggleClass(Style.pass,it == TestStatus.PASS)
}