正如 Marek 在他的回答中指出的那样,您的 css 属性 id 错误,您需要使用-fx-background-position: right center;
这是一个简短的示例,演示了使用 CSS 在 TextField 的右侧添加图片:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextFieldCssSample extends Application {
@Override public void start(Stage stage) throws Exception {
TextField textField = new TextField();
textField.setId("textField");
StackPane layout = new StackPane();
layout.getChildren().addAll(textField);
layout.getStylesheets().add(this.getClass().getResource("textfield.css").toExternalForm());
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) { launch(args); }
}
Css 文件:
/* textfield.css
place in same location as TextFieldCssSample.java and ensure build system copies it to output directory
image used courtesy of creative commons attribution license: http://www.rockettheme.com/blog/design/1658-free-halloween-icon-pack1
*/
.root {
-fx-padding: 15;
-fx-background-color: cornsilk;
}
#textField {
-fx-background-image:url('http://icons.iconarchive.com/icons/rockettheme/halloween/32/pumpkin-icon.png');
-fx-background-repeat: no-repeat;
-fx-background-position: right center;
-fx-font-size: 20;
}
样本输出:
如果我的 png 图像是 jar 文件中的本地文件,我将如何访问或引用它?
根据css参考的uri部分:
“地址可以是绝对 URI……或者相对于 CSS 文件的位置。”
例如
- a) 将 css 和图像文件放在 jar 文件中的相同位置,并仅使用
url('pumpkin-icon.png');
OR引用
- b)将图像文件放在
images
保存css的目录下的目录中,并像url('images/pumpkin-icon.png');
OR一样引用
- c) 将图像文件放在
images
jar 根目录下的目录中,并引用如下url('/images/pumpkin-icon.png');
不要使用使用..
父说明符的相对引用,例如../images/pumpkin-icon.png
,尽管它适用于磁盘文件,但..
说明符不是有效的 jar 协议路径,并且不会从 jar 中提取文件。