2016-12-09 10 views
1

Я хотел бы нарисовать пользовательскую рамку вокруг определенных строк таблицы с использованием JavaFX. На следующем рисунке вы можете увидеть текущее состояние.JavaFX: Table Row Multi-Color Border Style

this picture

Что мне нужно сделать, это заполнить пробелы между желтыми линиями с черными линиями.

Моя первая идея состояла в том, чтобы определить два стиля и добавить их обоих:

.tableRowStyle1{ 
    -fx-border-width: 3; 
    -fx-border-style: solid; 
    -fx-border-color: black; 
} 

.tableRowStyle2{ 
    -fx-border-color: yellow; 
    -fx-border-style: segments(12, 12, 12, 12); 
    -fx-border-width: 3; 
} 

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

Еще одна идея - играть с линейными и радиальными градиентами. Линейные градиенты не создают пунктирной линии. Радиальные градиенты, похоже, делают это, но длина тире невелика, так как они предназначены для работы в кругах, а не в прямоугольниках.

Любая помощь по этой теме очень ценится!

ответ

1

Если вы используете разные правила стиля, один заменит другой.

Вам нужно указать разные стили границ в том же правиле, что и разделенные запятыми значения. phase может использоваться для изменения начального смещения.

Пример

@Override 
public void start(Stage primaryStage) { 
    Region region = new Region(); 
    region.getStyleClass().add("border-region"); 

    Scene scene = new Scene(region, 300, 300); 
    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

style.css

.border-region { 
    -fx-background-color: red; 
    -fx-border-color: yellow, black; 
    -fx-border-style: segments(12, 12), segments(12, 12) phase 12; 
    -fx-border-width: 3; 
} 

КСТАТИ: Рассмотрите возможность использования PseudoClass вместо класса стиля, так как стиль, кажется, что-то, что может быть включен/вы легко можете использовать PseudoClass, так как вам не нужно беспокоиться о добавлении стиля в класс более одного раза.