当前位置: 首页 > 知识库问答 >
问题:

如何使用DocumentFilter自动将空字符串更改为0?

莫繁
2023-03-14

我想确保JTextField中始终有一个正整数。例如,在创建GUI时,JTextField当前有一个默认的“1”,我希望它能够在用户决定点击backspace时自动将文本设置为“0”,而不是变成一个空文本字段。这是因为文本字段还有一个监听器,它调用一个方法来根据这个数字更新GUI的另一部分。

我对DocumentFilter还很陌生,所以我甚至不确定自己的方向是否正确,但以下是我目前掌握的信息:

public class IntegerFilter extends DocumentFilter {

    public void remove(FilterBypass fb, int offs,
        int len) throws BadLocationException {

        if (offs == 0) {
            // I'm trying to think if there's something I can put here
        } else {
            super.remove(fb, offs, len);
        }
    }

    public void replace(FilterBypass fb, int offs, int len, String str,
        AttributeSet a) throws BadLocationException {

        String text = fb.getDocument().getText(0, fb.getDocument().getLength());
        text += str;
        if (text.matches("\\d+")) {
            super.replace(fb, offs, len, str, a);
        }
    }
}

到目前为止,我正在覆盖过滤器的删除()方法并检查用户正在删除的数字是否是最后一个。如果不是,则删除正常工作,但如果是这样,则还没有发生任何事情。

我认为我卡住的地方是我想在删除方法中调用替换方法,但我没有AteviteSet可以使用。

共有1个答案

胡景焕
2023-03-14

//我在想是否有什么东西可以放在这里

首先,你的基本逻辑是错误的。你不能只检查偏移量。文本字段中可能有5个数字,并且只是试图删除第一个数字。

你想做的是:

  1. 总是调用super.remove(...)从文档中删除数字
  2. 然后您需要获取Document来确定Document中还有多少位数字。如果值为零,则可以调用DocumentFilter的super.insertString(...)方法来插入要插入到Document中的任何值。

我没有可用的属性集。

对于JTextField,AttributeSet将为空。

 类似资料:
  • 我想将我的IDE连接到OracleSQLDeveloper。因此我必须使用这行代码: 要输入密码,我使用: 我想知道如何将这个JPasswordField转换成字符串,这样我就可以使用代码I的“Connect”行(这一行仅适用于字符串) 编辑:这是输入密码的代码。我在stackoverflow上找到了它:

  • 问题内容: 我知道它可以通过使用SQL来工作 但是我不能这样,我不能在SQL中硬编码’EMPTY_CLOB()’。我使用了如下方式: 但这没有用。Clob并未更新为空字符串,但仍存储为先前值。 任何人都可以帮助我吗? 问题答案: 正如我在另一个问题中已经提到的:以我的经验,getClob()和setClob()无法正常工作。 使用来代替: 这样,您还可以在更新之前删除不必要的SELECT,这也将提

  • 问题内容: 我有一个约有100列的遗留表(90%可为空)。在这90列中,我要删除所有空字符串并将其设置为null。我知道我可以: 但这很乏味且容易出错。必须在整个桌子上做到这一点吗? 问题答案: 这仍然是手动完成的,但比您要痛苦的要少一些,因为它不需要您为每一列发送查询。除非您想编写脚本麻烦,否则在执行此类操作时必须忍受一定的痛苦。 编辑:增加了小号

  • 我正在从Reddit API检索评论。该模型是线程化的,这样每个评论都可以在内部有一个评论列表,名为回复。下面是一个JSON响应的示例: 这是我如何用POJO建模的。上面的回复将被视为评论列表。 请注意底层CommentData POJO如何引用另一个名为“回复”的CommentList。 这个模型一直工作到GSON到达最后一个没有回复的子CommentData。API提供的不是空字符串,而是空字

  • 输入变量是一个字符串,例如我想将其格式化为浮动,这样我的输出将是 我检查了NumberFormat类以完成任务,但无法在最后将变量格式化为浮动 就目前而言,我使用以下方法正确获得字符串结果: 如何返回而不是?

  • 我被困在这个问题上,我不知道发生了什么。我试图使用Kafka流来写一个主题的日志。在另一端,我有Kafka连接将每个条目输入MySQL。所以,基本上我需要的是一个Kafka流程序,它将主题读取为字符串,并将其解析为Avro格式,然后将其输入不同的主题。 这是我写的代码: 以下是我得到空指针异常后的输出: 主题sqlin包含几个由数字和两个单词组成的消息。注意两行打印:函数得到一条消息,并在捕获空指