文本输入的矩形光标/javafx

文本输入的矩形光标/javafx,java,javafx,Java,Javafx,我想使用javafx实现一个文本输入。光标看起来像一个黑色矩形(适用于视力低下的人)。使用文本区域或文本字段似乎是不可能的。例如,鼠标形状可以是箭头。您能给出实现此功能的想法吗? 这里是完整的例子 import com.sun.javafx.scene.control.skin.TextFieldSkin; import javafx.application.Application; import javafx.geometry.Insets; import javafx

我想使用javafx实现一个文本输入。光标看起来像一个黑色矩形(适用于视力低下的人)。使用文本区域或文本字段似乎是不可能的。例如,鼠标形状可以是箭头。您能给出实现此功能的想法吗?


这里是完整的例子

import com.sun.javafx.scene.control.skin.TextFieldSkin;
    import javafx.application.Application;
    import javafx.geometry.Insets;
    import javafx.scene.Scene;
    import javafx.scene.control.TextField;
    import javafx.scene.layout.VBox;
    import javafx.scene.paint.Color;
    import javafx.stage.Stage;

    public class CaretColorizer extends Application {

        @Override
        public void start(Stage stage) throws Exception {
            TextField redCaretTextField = new TextField("Big black caret");
            redCaretTextField.setSkin(
                    new TextFieldCaretControlSkin(
                            redCaretTextField,
                            Color.RED
                    )
            );

            VBox layout = new VBox(10, redCaretTextField);

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

            stage.show();
        }

        public class TextFieldCaretControlSkin extends TextFieldSkin {
            public TextFieldCaretControlSkin(TextField textField, Color caretColor) {
                super(textField);


                caretPath.strokeProperty().unbind();
                caretPath.fillProperty().unbind();
                caretPath.setStrokeWidth(10);
                caretPath.setStroke(Color.BLACK);
                caretPath.setFill(Color.BLACK);
            }
        }

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

我还没有测试,但project似乎改变了颜色和宽度。它可以工作,但光标覆盖了两个相近的字符。在两个闪光灯之间可以看到它们。事实上,光标宽度只有一个像素。我可以实现一个空格字符。你还有别的想法吗?只需添加
caretPath.setTranslateX(10)