如何创建一条人造光标线



我需要我的假光标始终与文本字段一起可见,即使它在移动时没有调整任何大小。但我不知道该怎么做。";";本质上应该在您打字时充当闪烁的curser行。但我不知道如何添加一个不可编辑的文本字段。

有没有一种方法可以移动";";充当人工光标?

或者有更好的方法来处理我的问题吗?

这是我迄今为止所拥有的一个非常淡化的版本。

public class fake extends Application
{
TextField equationText=new TextField("¦sadfhoiqehre  jnvlsvkslurgbqo938y28374 9whfo37282736kabviouah7y82");
public void start(Stage primaryStage)
{
equationText.setEditable(false);
equationText.setAlignment(Pos.CENTER_RIGHT);
equationText.setFocusTraversable(false);
equationText.setDisable(true);
equationText.setOpacity(1);     //make text not look disabled
equationText.setStyle("-fx-border-color:black");
equationText.setPrefSize(360,30);
VBox pane=new VBox();
pane.getChildren().add(equationText);
Scene scene=new Scene(pane);
scene.setOnKeyPressed(event -> keyboardControls(event));
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.setTitle("Calculator FX");
primaryStage.show();
}

void moveIndex(char c)
{
if(c=='z')
{
//left
String pieThing=equationText.getText();
System.out.println("Dingttt"+pieThing);
System.out.println("Size of string "+pieThing.length());
System.out.println("index of thing "+pieThing.indexOf("¦"));
if(pieThing.indexOf("¦")>0)
{
int i=pieThing.indexOf("¦");
pieThing=pieThing.replace("¦","");
StringBuilder pieThingBuilder=new StringBuilder(pieThing);
pieThingBuilder.insert(i-1,"¦");
pieThing=pieThingBuilder.toString();
System.out.println("Done with right "+pieThing);
equationText.setText(pieThing);
}
else
{
System.out.println("left failed");
}
}
else
{
//right
String pieThing=equationText.getText();
System.out.println("Dingttt"+pieThing);
System.out.println("Size of string "+pieThing.length());
System.out.println("index of thing "+pieThing.indexOf("¦"));
if(pieThing.indexOf("¦")+1!=pieThing.length())
{
int i=pieThing.indexOf("¦");
pieThing=pieThing.replace("¦","");
StringBuilder pieThingBuilder=new StringBuilder(pieThing);
pieThingBuilder.insert(i+1,"¦");
pieThing=pieThingBuilder.toString();
System.out.println("Done with right "+pieThing);
equationText.setText(pieThing);
}
else
{
System.out.println("right failed");
}
}
}
void keyboardControls(javafx.scene.input.KeyEvent key)
{
if(key.getCode()==KeyCode.Z)
moveIndex('z');
else if(key.getCode()==KeyCode.X)
moveIndex('x');
}
public static void main(String[] args)
{
launch(args);
}

我找到了答案。实际上没有人告诉我这件事;插入符号";位置可以用代码移动。因此,经过一周的环顾四周,我发现在更改i以更新索引后,我可以只执行equationText.positionCaret(i+1);。每个动作都有相同的代码。不幸的是,这种剂量的行为就像一条真正的curser线一样,只会坚持极右翼的

最新更新