在JavaFX textarea中更改选择的前景色

时间:2016-03-04 20:51:29

标签: java javafx textarea selection

我想更改JavaFx textarea中所选文本的样式。我已经成功通过设置Sub drpPlaylists_getItemCount(Control As IRibbonControl, ByRef drpPlaylists_itemCount) drpPlaylists_itemCount = UBound(ReadDirectoryContents(MusicDirectory, "*.m3u")) End Sub 来更改背景颜色,但我没有找到如何更改文本的前景色。有谁知道如何实现这一目标?我已经通过了modena.css文件并尝试了许多属性,但直到现在还没有成功。

非常感谢!

1 个答案:

答案 0 :(得分:3)

JavaFX 8 CSS reference documentation开始,文本输入控件(如文本区域)中所选文本的前景填充的css属性似乎是:

-fx-highlight-text-fill

示例

左侧是TextArea,它没有焦点并且有一些选定的文本。右侧是TextArea,它具有焦点和一些选定的文本。自定义样式应用于选定的文本前景和背景,颜色根据焦点状态而不同。

unfocused focused

文本highlighter.css

.text-input {
    -fx-highlight-fill: paleturquoise;
    -fx-highlight-text-fill: blue;
}
.text-input:focused {
    -fx-highlight-fill: palegreen;
    -fx-highlight-text-fill: fuchsia;
}

TextHighlighter.java

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TextHighlighter extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        TextArea textArea = new TextArea(
                "The quick brown cat ran away with the spoon."
        );
        textArea.selectRange(4, 9);
        textArea.setWrapText(true);

        VBox layout = new VBox(10, new Button("Button"), textArea);
        final Scene scene = new Scene(layout);
        scene.getStylesheets().add(
                this.getClass().getResource("text-highlighter.css").toExternalForm()
        );
        stage.setScene(scene);
        stage.show();
    }

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