【问题标题】:JavaFX TextField only Focued state changeable with css仅 JavaFX TextField 可使用 css 更改焦点状态
【发布时间】:2019-05-11 15:52:53
【问题描述】:

所以我正在尝试使用带有 javafx 的 CSS 文件来更改在文本字段中写入的文本的颜色。问题是,无论我尝试什么,我只能在选择 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;
}

【问题讨论】:

  • 什么是-fx-text-primary-fx-secondary-light
  • css文件中定义的颜色,如果我把十六进制值放在那里,结果是一样的
  • 我无法重现这个。使用 .text-field { -fx-background-color: red; -fx-text-fill: blue; -fx-prompt-text-fill: green; } 可以按预期工作,即使文本字段没有获得焦点。
  • 我添加了整个 css 文件,也许某处有错误?除了 textfields 之外的所有东西都可以正常工作
  • 您使用哪个 Java 和 JavaFX 版本?

标签: java javafx


【解决方案1】:

试着用代码做

这是在文本字段 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() 方法。 txtReference , txtName ,txtNIC ,txtMobileNo,txtEmail 是文本字段ID

或使用 CSS

-fx-text-inner-color: red;

这对我有用。

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2015-07-27
    • 2014-11-15
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多