Да, можно присвоить каждой стороне свой цвет. Из JavaFX CSS Справочного руководства , для Region
:
- CSS Свойство:
-fx-border-color
- Значения:
<paint> | <paint> <paint> <paint> <paint> [ , [<paint> | <paint> <paint> <paint> <paint>] ]*
- По умолчанию:
null
- Комментарии: Серия значений краски или наборы из четырех значений краски, разделенных запятыми. Для каждого элемента в серии, если указано одно значение краски, эта краска используется в качестве границы для всех сторон области; и если указан набор из четырех красок, они используются для верхней, правой, нижней и левой границ области в указанном порядке. Если граница не прямоугольная angular, используется только первое значение краски в наборе.
Примечание: Выше указано фактически из одной строки таблицы, но переполнение стека не дает возможности форматировать объекты в таблице.
То есть вы можете нацелить нижнюю границу только с помощью:
.text-field {
-fx-border-color: transparent transparent red transparent;
}
Свойство -fx-border-width
CSS (и действительно все свойства CSS, относящиеся к свойствам Region#background
и Region#border
) ведут себя одинаково. Это означает, что вы можете выполнить sh то же самое, установив ширину каждой стороны, но снизу, до нуля, как в ответе mipa .
Вот пример с использованием inline CSS (т.е. setStyle
):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage primaryStage) {
TextField field = new TextField("Hello, World!");
field.setStyle("-fx-border-color: transparent transparent red transparent;");
field.setMaxWidth(Region.USE_PREF_SIZE);
primaryStage.setScene(new Scene(new StackPane(field), 300, 150));
primaryStage.show();
// Remove blue outline from when TextField is focused. This
// makes it easier to see the red border.
primaryStage.getScene().getRoot().requestFocus();
}
}
, который дает следующий вывод:
Обратите внимание, что большинство «границы», добавленные modena.css
(таблица стилей пользовательского агента по умолчанию в JavaFX 8+), на самом деле не являются границами. Вместо этого они представляют собой несколько фонов с разными вставками.