Добрый день,пишу легкий чатик, захотел сделать приятный интерфейс, и при попытке поставить картинку на фон textArea столкнулся с проблемой отсутствия таковой возможности. Для графического составляющего использую Scene Builder. Могу взять ImageView растянуть по всей textArea и подрегулировать opacity. Но теряется резкость выводимого текста. Подскажите пожалуйста, какие есть решение данной проблемы ?
Ответ
С помощью Scenic View можно выявить внутреннюю структуру TextArea
TextArea styleClass="text-input text-area"
ScrollPane styleClass="scroll-pane"
StackPane styleClass="viewport"
StackPane
ContentView styleClass="content"
Group
Text styleClass="text"
Path
ScrollBar styleClass="scroll-bar"
...
ScrollBar styleClass="scroll-bar"
...
StackPane styleClass="corner"
Исходя из этого, можно задать фоновое изображение в .css-файле в .text-area {...}, а внутренним панелям назначить прозрачность. При этом изображение не будет прокручиваться вместе с текстом:
.text-area {
-fx-background-image: url("bg.png");
}
.text-area .scroll-pane .scroll-bar {
-fx-background-color: rgba(255,255,255,0.5);
}
.text-area .viewport {
-fx-background-color: transparent;
}
.text-area .content {
-fx-background-color: transparent;
}
.text-area .text {
-fx-effect: dropshadow(gaussian,#fff,10,0.8,0,0);
}
Если же нужно, чтобы изображение прокручивалось, тогда следует указать его в .text-area .content {...}
Документация по CSS:
JavaFX 9 CSS Reference Guide
JavaFX 8 CSS Reference Guide
Комментариев нет:
Отправить комментарий