【发布时间】: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 版本?