如何格式化文本字段javafx

2023-12-15

我希望能够以 hh:mm:ss 格式在 javafx 文本字段中输入时间。我将如何格式化文本字段?我已经获得了正则表达式方法,因此它只接受数字作为输入:

public void format(TextField t, String regex){
    TextFormatter<String> formatter = new TextFormatter<String>( change -> {
        change.setText(change.getText().replaceAll(regex, ""));
        return change; 


    });
    t.setTextFormatter(formatter);
}

我还得到了一种限制文本字段中允许的字符数的方法:

public void limitLength(int maxLength, TextField t){
    t.lengthProperty().addListener(new ChangeListener<Number>() {

        @Override
        public void changed(ObservableValue<? extends Number> observable,
                Number oldValue, Number newValue) {
            if (newValue.intValue() > oldValue.intValue()) {
                // Check if the new character is greater than LIMIT
                if (t.getText().length() >= maxLength) {

                    t.setText(t.getText().substring(0, maxLength));
                }
            }
        }
    });
}

然而,这些都不能帮助我获得我想要的时间格式。理想的情况是初始文本为 00:00:00,并且用户只能编辑数字,而无法触摸冒号。如果我能够确保每个冒号之间有 2 个数字,即用户应该无法移动数字,例如 0:000:00,那就太棒了。

谢谢你的帮助。


使用简单日期格式

已经有一个类专为格式化日期而设计,您可以将其与TextField's textFormatter: SimpleDateFormat

TextField tf = new TextField();
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
tf.setTextFormatter(new TextFormatter<>(new DateTimeStringConverter(format), format.parse("00:00:00")));

请参阅 javadocSimpleDateFormat有关字符含义的更详细描述。

使用 3 个不同的文本字段

您还可以使用 3 种不同的TextFields 并删除背景和边框并将它们放入HBox获得不可编辑的:s:

TextField hours = new TextField();
TextField minutes = new TextField();
TextField seconds = new TextField();
StringConverter<Integer> minSecConverter = new IntRangeStringConverter(0, 59);
minutes.setTextFormatter(new TextFormatter<>(minSecConverter, 0));
seconds.setTextFormatter(new TextFormatter<>(minSecConverter, 0));
hours.setTextFormatter(new TextFormatter<>(new IntRangeStringConverter(0, 23), 0));
prepareTextField(hours);
prepareTextField(minutes);
prepareTextField(seconds);
    
HBox fields = new HBox(hours, createLabel(),minutes, createLabel(), seconds);
fields.setPadding(new Insets(4));
fields.setStyle("-fx-background-color: white;");
public static void prepareTextField(TextField tf) {
    tf.setAlignment(Pos.CENTER);
    tf.setBackground(Background.EMPTY);
    tf.setBorder(Border.EMPTY);
    tf.setPadding(Insets.EMPTY);
    tf.setPrefColumnCount(2);
}

public static class IntRangeStringConverter extends StringConverter<Integer> {

    private final int min;
    private final int max;

    public IntRangeStringConverter(int min, int max) {
        this.min = min;
        this.max = max;
    }
    
    @Override
    public String toString(Integer object) {
        return String.format("%02d", object);
    }

    @Override
    public Integer fromString(String string) {
        int integer = Integer.parseInt(string);
        if (integer > max || integer < min) {
            throw new IllegalArgumentException();
        }

        return integer;
    }

}

public static Label createLabel() {
    Label label = new Label(":");
    label.setPrefWidth(3);
    return label;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何格式化文本字段javafx 的相关文章

  • Ruby Regex 舍入尾随零

    我正在寻找一个正则表达式来删除十进制数字中的尾随零 它应该返回以下结果 0 0002300 gt 0 00023 10 002300 gt 10 0023 100 0 gt 100 1000 gt 1000 0 0 gt 0 0 gt 0
  • Perl 中字符串之间的字符匹配计数

    我有一个字符串 例如字符串 1 需要与另一个字符串 字符串 2 匹配 两个字符串的长度相同并且不区分大小写 我想打印两个字符串之间的字符匹配数 E g String 1 stranger String 2 strangem Match co
  • NGINX hashbang 重写

    我想知道 hashbang url 的位置或重写 nginx 指令会是什么样子 基本上像前端控制器一样通过 hashbang 路由所有非 hashbanged url 所以 http example com about staff 将路由至
  • Apache 重写规则可以使用或不使用尾部斜杠

    我正在尝试重定向一系列静态 URL 并且无论尾部斜杠是否存在 我都希望它能够正常工作 foo bar gt tacos foo bar gt tacos 我已经尝试了以下方法以及各种变体 但我总是只得到尾部斜杠存在的匹配项 RewriteR
  • 正则表达式是否用于构建解析器?

    这只是出于好奇的一个问题 因为我最近需要越来越多地解析和使用正则表达式 似乎 对于我在搜索中遇到的有关某种解析的问题 有人总是最终说 当问一些与正则表达式相关的问题 正则表达式对此不好 请使用这样那样的解析器 因为我已经更好地理解了正则表达
  • 优化正则表达式来解析中文拼音[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个有
  • 如何在 Java 中用 \n 替换 \\n

    我有一个string test first n middle n last 现在我想更换所有 n by n 我试过了test replaceAll n n and test replaceAll n n 但它们不起作用 有人有解决办法吗 T
  • 正则表达式或用单个空格替换多个空格的方法

    你能告诉我有没有办法在java或spring中用单个空格替换多个空格 有相同的 stringUtils 函数吗 like 1 test test test test 2 test test test test 3 test test tes
  • 使用正则表达式检查整个字符串

    我正在尝试检查字符串是否是数字 因此正则表达式 d 似乎不错 然而 由于某种原因 该正则表达式也适合 78 46 92 168 8000 这是我不想要的 一些代码 class Foo rex re compile d def bar sel
  • IntelliJ 不会从 Maven 依赖项加载 javafx 包 (JavaFX 17)

    我正在尝试获取一个 Maven JavaFX 项目 该项目是从javafx 原型 fxml原型且未经编辑 可在最新版本的 IntelliJ 中运行 需要明确的是 该项目是该原型的直接复制 我只是想让一个例子起作用 可以说我是 Maven 的
  • 匹配不包含超过 x 个连续字符的字符串的正则表达式是什么

    我想要匹配不包含连续 3 个以上重复的相同字符的字符串 所以 abaaaa 不匹配 abawdasd 比赛 abbbbasda 不匹配 巴巴巴巴 比赛 是的 对包含连续字符进行正则表达式匹配 然后在代码中对其进行否定会更容易 更简洁 然而
  • nginx位置正则表达式,匹配多次

    如何在 nginx 位置正则表达式中多次匹配 看来 x x 语法永远不起作用 例如 location abc w 1 3 从来不工作 您必须引用包含以下内容的位置 or 人物 location abc w 1 3 否则 nginx 将其解析
  • Python正则表达式替换除特定单词之外的所有内容

    我正在尝试执行以下操作用正则表达式 import re x re compile going you words to replace s I am going home now thank you string to modify pri
  • 被一个简单的正则表达式难住了

    我想看看字符串是否s包含正则表达式中的任何符号 下面的正则表达式可以正常工作rubular http rubular com s asd d s 但在 Ruby 1 9 2 中 它给出了以下错误消息 syntax error unexpec
  • 如何在 powershell 中使用正则表达式选择“catch”代码块?

    我正在尝试分析多个目录中的大量 powershell 脚本 并且希望将任何 Catch 代码块拉入列表 变量中 我正在尝试编写一个正则表达式来选择以下格式的任何块 Catch write Host Function MyInvocation
  • 按日期对图表中的 X 轴进行排序 - JavaFX

    如何按日期对折线图 X 轴进行排序 现在我的折线图看起来像这样 我试图剪切日期并将其转换为 int 但现在我不知道该怎么办 datesToCompare addAll LastHoursAndDates keySet dates in St
  • 如何在正则表达式中区分数字和ip地址?

    例如 如果我们查看 5 56 和 183 55 0 144 基本上 当你做这样的事情时 d d 它匹配 5 56 189 55 和 0 144 有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分 我尝试使用前瞻 但我不知道它应该是
  • JavaFX 如何在不改变线宽的情况下缩放路径的坐标?

    我目前正在制作具有缩放和平移功能的阶梯折线图 由于我需要处理的数据量非常大 因此每次调用layoutPlotChildren 时 我无法重新创建步骤线的整个路径 所以我的想法是创建一次路径元素 然后在缩放和平移事件时对其进行转换 到目前为止
  • C# 正则表达式用于查找 中具有特定结尾的链接

    我需要一个正则表达式模式来查找字符串 带有 HTML 代码 中的链接 以获取文件结尾如 gif 或 png 的链接 示例字符串 a href site com folder picture png target blank picture
  • 如何使用 php 从字符串中提取日期

    我需要从字符串中提取日期 下面是我的代码和字符串 str Updated status to Masters Software Engineering Enrolled Documents to Send on 03 06 2014 14

随机推荐

  • 在给定索引和值列表的嵌套 Python 字典中设置值

    我正在尝试以编程方式在字典中设置一个值 可能是嵌套的 给定索引列表和值 例如 假设我的索引列表是 person address city 其值为 New York 我想要一个像这样的字典对象 Person address city New
  • 使用 JavaFX 播放 Youtube 视频

    我正在尝试使用 javaFX 播放 youtube 上的视频 这是我的代码 public class Main extends Application public static void main String args launch a
  • TypeScript 中“声明类”和“接口”有什么区别

    在 TypeScript 中 创建 d ts 源声明文件时 哪个更好 为什么 declare class Example public Method void or interface Example Method void 我可以看出的区
  • 如何从 lxc 挂载文件夹

    我有 lxc 它有一个正在运行的应用程序 要在自己的计算机 Ubuntu 13 10 上编辑此应用程序的代码 我想挂载一个目录lxc 如何才能做到这一点 例如 var lib lxc ubuntu 12 04 rootfs home 安装在
  • 简单密码程序中的错误(cryptography.fernet.InvalidToken)

    我正在用 Python 编写一个简单的密码程序 对于 Python 来说是新的 对于加密来说甚至是新的 其中用户帐户和密码被保存在字典中的文件中 我正在使用 Fernet 模块加密密码 添加用户工作正常 但是当我尝试解密密码时 我得到了cr
  • 我在使用 imwrite 时遇到错误

    我是图像处理新手 我想做的是调整图像大小并将其存储为 tif 格式 但命令窗口报告错误 您没有写入权限 我的代码是imwrite B myNewFile tif 运行后显示 使用 imwrite 时出错 第 10 行 无法打开文件 myNe
  • 从字符串末尾开始每 2 个字符之间添加一个空格

    我想在字符串末尾的每两个字符之前添加空格 str 9010201 结果应该是9 01 02 01 I tried chunk split and str split 但它仅从字符串的开头起作用 而从最后一个不起作用 使用简单strrev a
  • 在 Xcode 6 中选择不同的模拟器

    如何在 Xcode 6 中选择不同的模拟器 iOS 8 除外 我已经成功安装了 iOS 7 模拟器Xcode gt 首选项 gt 下载 但它没有在可用的运行模拟器中列出 有人知道如何在 Xcode 6 中安装 iOS7 模拟器吗 一旦安装了
  • 如何在 Java 中使用 .Net 程序集

    我想在 Java 应用程序中使用 Microsoft Net 程序集 有什么办法可以做到这一点吗 任何帮助将不胜感激 Java 和 Net 运行完全不同的系统 分别是 JVM 和 CLR 不可能直接将一个加载到另一个中并使用它 它们是不兼容
  • 如何将JSON字符串转换为Java对象的List?

    这是我的 JSON 数组 firstName abc lastName xyz firstName pqr lastName str 我的 String 对象中有这个 现在我想将它转换为Java对象并将其存储在java对象的List中 例如
  • android - 折叠工具栏和片段布局不能一起工作

    在我的应用程序中 我有两个片段和一个 MainActivity Activity main xml 包含一个折叠工具栏 当片段为空时 它非常适合我 在我的第一个片段中 我从服务器获取 json 数据并将其放入片段活动内的列表视图中 数据已正
  • 使用 PHP 解析“top”命令(Shell)的输出

    我正在尝试使用 PHP 导出 top 命令 unix 的输出 使用 exex 函数调用和读取命令 输出非常简单 但问题是 top 命令输出 顺序 名称等 始终相同吗 或者与我使用的发行版有关 有什么方法可以在 UNIX 系统上 一般 解析这
  • Android:如何获取绘制路径的面积大小?

    我的问题是测量路径的表面积 我生成一个随机路径并将其绘制在画布上 触摸这条闭合路径后 我想获取这条绘制路径的面积大小 我怎样才能得到这条路径的实际面积大小 路径 形状 如下所示 链接到图像 我找到了解决方案 我从路径生成一个区域 并使用 R
  • 如何获取bucket文件的urn

    请告诉我如何获取桶文件的瓮 您可以获取上传到存储桶时响应中包含的 urn 但我想获取已上传到存储桶的文件的 urn 有什么办法吗 您可以使用GET buckets bucketKey objects端点以获取存储桶中所有文件的列表 在响应中
  • 部署在 Azure 上时看不到 C# Azure Function

    将我的 C Azure Function 从 VSCode 部署到 Azure 时 我似乎在门户上看不到它 我还注意到 消息 无 HTTP 触发器 专门针对 C 相关函数出现 因为我已尝试使用 Azure 函数扩展部署我的 Python 函
  • 如何在NestedScrollView中使用RecyclerView?

    如何使用RecyclerView inside NestedScrollView RecyclerView设置适配器后内容不可见 UPDATE布局代码已更新
  • 如何使用批处理脚本查找大阶乘

    echo off if 1 echo Missing parameter Try passing the number as a parameter like factorial 10 without the quotes goto end
  • 在现有第一个表单中使用弹出表单中的功能

    我无法弄清楚如何正确执行此操作 基础知识是我有 1 个表格 用于填写我保存在 2 个列表中的各种数据 第二种形式是通过菜单选项调用的 该菜单选项显示所有当前数据的概述 它是这样打开的 private void OpenOverviewFor
  • Div 内未知大小文本的底部填充

    Here I want to have a text padding margin on the bottom part of my Div to have a more organized and tidier look 我希望它能够灵活
  • 如何格式化文本字段javafx

    我希望能够以 hh mm ss 格式在 javafx 文本字段中输入时间 我将如何格式化文本字段 我已经获得了正则表达式方法 因此它只接受数字作为输入 public void format TextField t String regex