在文本字段javaFX中提示文本

Oundroni

从JavaFX CSS,我只想对提示文本应用一种效果,而不影响TextField中的文本,但不知道如何访问该项目。我只能使用-fx-prompt-text-fill更改颜色。当我对文本应用效果时,提示文本也会受到影响,为什么?

.text-field {
    -fx-prompt-text-fill: gray;
}
.text-field > .text {
        -fx-effect: dropshadow( two-pass-box , blue , .5, 10 , 1 , 1);    
}

在上面的代码中,阴影也适用于提示文本,我想避免!

詹姆斯·D

提示文本仅在文本字段为空时显示,因此,我看到的最简单的方法是定义和“清空” CSS PseudoClass。根据需要在文本上设置效果,然后在空文本字段中将文本的效果定义为null:

.text-field {
    -fx-prompt-text-fill: gray;
}

.text-field .text {
    -fx-effect: dropshadow( two-pass-box , blue , .5, 10 , 1 , 1);    
}

.text-field:empty .text {
    -fx-effect: null ;
}

为了使伪类起作用,您需要在文本字段中使用text属性注册一个侦听器并对其进行更新:

TextField textField = new TextField();
textField.setPromptText("Enter text");

PseudoClass empty = PseudoClass.getPseudoClass("empty");
textField.pseudoClassStateChanged(empty, true);
textField.textProperty().addListener((obs, oldText, newText) -> {
    textField.pseudoClassStateChanged(empty, newText.isEmpty());
});

这是一个SSCCE(上面的CSS代码位于hint-text-styling.css中):

import javafx.application.Application;
import javafx.css.PseudoClass;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TextFieldPromptStylingTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        TextField textField = new TextField();
        textField.setPromptText("Enter text");

        PseudoClass empty = PseudoClass.getPseudoClass("empty");
        textField.pseudoClassStateChanged(empty, true);
        textField.textProperty().addListener((obs, oldText, newText) -> {
            textField.pseudoClassStateChanged(empty, newText.isEmpty());
        });

        Button okButton = new Button("OK");
        VBox root = new VBox(10, textField, okButton);
        root.setAlignment(Pos.CENTER);
        root.setPadding(new Insets(24));

        Scene scene = new Scene(root);
        scene.getStylesheets().add("prompt-text-styling.css");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX文本字段绑定

来自分类Dev

如何在JavaFX中的文本字段中添加提示文本

来自分类Dev

在ios 7的文本字段中提供*提示*作为android中的edittext字段

来自分类Dev

输入文本字段中的提示值

来自分类Dev

Netbeans Swing文本字段提示列表

来自分类Dev

JavaFX:文本字段的红色边框

来自分类Dev

JavaFX:以编程方式聚焦文本字段

来自分类Dev

javafx中文本字段的onAction

来自分类Dev

无法获取文本字段输入 [JavaFX]

来自分类Dev

如何在文本或文本字段的左侧显示工具提示

来自分类Dev

将提示设置为文本字段中的文本开头

来自分类Dev

JavaFX更改CSS中禁用的文本字段的文本颜色

来自分类Dev

JavaFX中的可复制标签/文本字段/标签文本

来自分类Dev

JAVAFX-无法设置文本字段的文本

来自分类Dev

如何启用抗锯齿JavaFX的文本字段的文本?

来自分类Dev

JavaFX中的可复制标签/文本字段/标签文本

来自分类Dev

更改文本字段颜色后如何获得正常的JavaFX文本字段?

来自分类Dev

更改文本字段颜色后如何获得普通的JavaFX文本字段?

来自分类Dev

在Vuetify中将文本字段的值与工具提示内容同步

来自分类Dev

Codenameone:无法将浮动提示设置为文本字段

来自分类Dev

使用 pdfbox 为文本字段设置工具提示

来自分类Dev

从同名文本字段中提交多个值

来自分类Dev

在R的文本字段中提取句点前的数字

来自分类Dev

SQL查询以从文本字段中提取单词

来自分类Dev

更改在Wicket中提交按钮的文本字段

来自分类Dev

Linux从文件中提取匹配的文本字段

来自分类Dev

PowerQuery (M):如何从大文本字段中提取日期?

来自分类Dev

从存储在文本字段中的键/值对中提取值

来自分类Dev

文本字段从右到左

Related 相关文章

热门标签

归档