在TextField中更改插入符的大小(JavaFX 8)

时间:2017-04-04 16:57:51

标签: css javafx-8 textfield caret

我试图在不改变字体大小的情况下在TextField中调整插入符号的大小,但我不能这样做。

有谁知道怎么做?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道你为什么要这样做。这可能不会给你你想要的东西,但它确实改变了插入符号的大小。请注意,大插入符号仍将被剪切为包含TextField的范围。

m和a之间的小线是小插入符号。图像传输到stackoverflow降低了清晰度,因此很难看到:

small caret

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

public class BiglyCaret extends Application {

    @Override 
    public void start(Stage stage) throws Exception {
        TextField bigCaretTextField = new TextField("Big Caret");
        bigCaretTextField.setSkin(
                new TextFieldCaretControlSkin(
                        bigCaretTextField,
                        2
                )
        );

        TextField smallCaretTextField = new TextField("Small Caret");
        smallCaretTextField.setSkin(
                new TextFieldCaretControlSkin(
                        smallCaretTextField,
                        0.5
                )
        );

        TextField normalTextField = new TextField("Standard Caret");

        VBox layout = new VBox(
                10,
                bigCaretTextField,
                smallCaretTextField,
                normalTextField
        );

        layout.setPadding(new Insets(10));
        stage.setScene(new Scene(layout));

        stage.show();
    }

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

TextFieldCaretControlSkin.java

请注意,这在Java 8中使用私有API类,因此它不适用于Java 9.在Java 9中,TextFieldSkin将成为公共API(移至javafx包而不是{{} 1}} package),如果更改包,它可能适用于Java 9。

com.sun

这个答案基于这个答案: