我试图在不改变字体大小的情况下在TextField中调整插入符号的大小,但我不能这样做。
有谁知道怎么做?
谢谢!
答案 0 :(得分:1)
我不知道你为什么要这样做。这可能不会给你你想要的东西,但它确实改变了插入符号的大小。请注意,大插入符号仍将被剪切为包含TextField的范围。
m和a之间的小线是小插入符号。图像传输到stackoverflow降低了清晰度,因此很难看到:
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
这个答案基于这个答案: