Выделите верхнюю часть JavaFX TableRow с помощью CSS - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь выяснить CSS для выделения верхней части TableRow.Я использую это для переупорядочения строк, чтобы любой, переупорядочивающий их, мог сказать, куда он будет вставлен.В настоящее время я только смог нарисовать прямоугольник вокруг строки, но я просто хочу верхнюю линию этого прямоугольника.

.table-row-cell.drag {
    -fx-focus-color: #00a9d3;
    -fx-faint-focus-color: #00a9d322;

    -fx-highlight-fill: -fx-accent;
    -fx-background-color:
        -fx-focus-color,
        -fx-control-inner-background,
        -fx-faint-focus-color,
        linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);
    -fx-background-insets: -0.2, 1, -1.4, 3;
    -fx-background-radius: 3, 2, 4, 0;
}

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете указать разные -fx-background-insets для сторон.Если один цвет должен появляться только на одной стороне, вставки следующего цвета соответствуют вставкам для цвета метки, за исключением стороны, которая должна быть окрашена.

Кроме того, я рекомендую использовать PseudoClass вместо класса стиля, так как таким образом вам не нужно обязательно добавлять класс несколько раз.

final PseudoClass mark = PseudoClass.getPseudoClass("mark");

...

boolean marked = ...
row.pseudoClassStateChanged(mark, marked);

Следующий CSS немного упрощен, но он должен продемонстрировать подход:

.table-row-cell:mark {
    -fx-background-color: -fx-table-cell-border-color, red, -fx-background;

    /* show red highlight of size 2 at the top */
    -fx-background-insets: 0, 0 0 1 0, 2 0 1 0;
}
...