Только для JavaFX TextField Сосредоточенное состояние, изменяемое с помощью CSS - PullRequest
3 голосов
/ 11 мая 2019

Поэтому я пытаюсь изменить цвет текста, написанного внутри текстового поля, используя файл CSS с javafx.Проблема в том, что независимо от того, что я пытаюсь, я могу изменить цвет только тогда, когда у меня выбран textField.

Я уже пробовал каждую переменную текстового поля, которую можно изменить, и да, я пыталсяразделяя сфокусированное и не слитное состояние textField.Я не знаю, в чем может быть проблема.

Это то, что я пробовал: (-fx-Secondary Light, -FX-Text-primary - это цвета, определенные мной. Удаление их и использование шестнадцатеричных значений ничего не меняет)

.textFieldSecondary {
    -fx-background-color:  -fx-secondary-light;
    -fx-text-fill: -fx-text-primary;
    -fx-prompt-text-fill: -fx-text-primary;
}

Это меняет цвет фона как для сфокусированного, так и не сфокусированного, и изменяет только шрифты, когда я сфокусирован

.textFieldSecondary {
    -fx-background-color:  -fx-secondary-light;
    -fx-text-fill: -fx-text-primary;
    -fx-prompt-text-fill: -fx-text-primary;
}
.textFieldSecondary:focused {
    -fx-background-color:  -fx-secondary-light;
    -fx-text-fill: -fx-text-primary;
    -fx-prompt-text-fill: -fx-text-primary;
}

Тот же результат, что и

.textFieldSecondary {
    -fx-background-color:  -fx-secondary-light;
    -fx-text-fill: -fx-text-primary;
    -fx-prompt-text-fill: -fx-text-primary;
}

Если я делаю только сфокусированное, это работает: если я не сфокусирован, это совершенно ясно, если я сфокусирован, все это показывает правильно

Насколько я понимаю, первый случай должен только изменить не сфокусированное состояниеВторой второй, а третий только сфокусированный.Но я не работаю.В чем моя вина, которая мешает мне изменить оба состояния?

Это мой полный файл CSS:

* {
    -fx-white: #FFFFFF;

    -fx-primary-default: #333333;
    -fx-primary-light: #696969;

    -fx-secondary-default: #DB5A42;
    -fx-secondary-light: #DE6953;

    -fx-text-primary: #FFFFFF;
    -fx-error-primary: #FF0000;
    -fx-closeButton: #FF0000;
}

.buttonPrimary {
    -fx-background-color: -fx-primary-default;
    -fx-border-color: -fx-white;
    -fx-border-width: 3;
    -fx-border-radius: 5;
}

.buttonSecondary {
    -fx-background-color: -fx-secondary-default;
    -fx-border-color: -fx-secondary-light;
    -fx-border-width: 3;
    -fx-border-radius: 5;
}

.buttonExit {
    -fx-background-color: -fx-closeButton;
    -fx-background-radius: 0;
}

.buttonBack {
    -fx-background-color: -fx-secondary-default;
    -fx-background-radius: 0;
    -fx-background-image: url('/Resources/backArrow.png');
    -fx-background-position: center;
    -fx-background-size: 231px 68px;
}

.textFieldSecondary {
    -fx-background-color:  -fx-secondary-light;
    -fx-text-fill: -fx-text-primary;
    -fx-prompt-text-fill: -fx-text-primary;
}

.textFieldSecondaryError {
    -fx-background-color:  -fx-secondary-light;
    -fx-border-color: -fx-error-primary;
    -fx-border-width: 2;
    -fx-border-radius: 2;
    -fx-text-fill: -fx-text-primary;
}

1 Ответ

1 голос
/ 11 мая 2019

Попробуйте сделать с кодом

Это простой способ изменить цвет внутренней заливки текста в текстовом поле JAVAFX

private void setTextColor() {
    txtReferance.setStyle("-fx-text-inner-color: red;");
    txtName.setStyle("-fx-text-inner-color: red;");
    txtNIC.setStyle("-fx-text-inner-color: red;");
    txtMobileNo.setStyle("-fx-text-inner-color: red;");
    txtEmail.setStyle("-fx-text-inner-color: red;");
}

и вызвать этот метод setTextColor () метод инициализации или конструктор.txtReferance, txtName, txtNIC, txtMobileNo, txtEmail являются идентификаторами текстовых полей

ИЛИ с использованием CSS

-fx-text-inner-color: red;

, это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...