在JavaFX文本字段中输入文本之前显示不可删除的文本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在JavaFX文本字段中输入文本之前显示不可删除的文本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2064字,纯文字阅读大概需要3分钟。
内容图文
![在JavaFX文本字段中输入文本之前显示不可删除的文本](/upload/InfoBanner/zyjiaocheng/728/3a92c9b49d68487ab6f54e2e48bbe412.jpg)
我目前正在尝试构建一个与命令shell类似的应用程序.我想在javaFX文本字段中的用户输入文本之前显示我给它的路径(或至少是’>’字符).像这样:
我有它,以便当用户提交文本时文本字段将清除.提交后,它将字段的文本设置为我的路径以实现类似的效果,但用户仍然可以在输入文本时删除此路径.
我怎样才能使我的路径文本显示在字段中但用户无法删除它?
我试过这个,但它只是在提交后更新了插入位置:
textField.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.positionCaret(textField.getLength());
}
});
解决方法:
您可以使用TextFormatter过滤掉文本字段上的无效操作. TextFormatter有一个过滤器,用于过滤对文本字段的更改;您可以通过使过滤器返回null来否决任何更改.您描述的最简单的实现只会过滤掉文本字段的插入位置或锚点在固定文本结束之前的任何更改:
UnaryOperator<TextFormatter.Change> filter = c -> {
if (c.getCaretPosition() < prefix.length() || c.getAnchor() < prefix.length()) {
return null ;
} else {
return c ;
}
};
textField.setTextFormatter(new TextFormatter<String>(filter));
您可以在此处试验其他逻辑(例如,如果您希望用户能够选择固定文本).
这是一个SSCCE:
import java.util.function.UnaryOperator;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextFieldFixedPrefix extends Application {
private TextField createFixedPrefixTextField(String prefix) {
TextField textField = new TextField(prefix);
UnaryOperator<TextFormatter.Change> filter = c -> {
if (c.getCaretPosition() < prefix.length() || c.getAnchor() < prefix.length()) {
return null ;
} else {
return c ;
}
};
textField.setTextFormatter(new TextFormatter<String>(filter));
textField.positionCaret(prefix.length());
return textField ;
}
@Override
public void start(Stage primaryStage) {
TextField textField = createFixedPrefixTextField("/home/currentUser $");
StackPane root = new StackPane(textField);
Scene scene = new Scene(root, 300,40);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
内容总结
以上是互联网集市为您收集整理的在JavaFX文本字段中输入文本之前显示不可删除的文本全部内容,希望文章能够帮你解决在JavaFX文本字段中输入文本之前显示不可删除的文本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。