gpt4 book ai didi

java - JTextField:将十进制逗号重新映射到点

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:06 24 4
gpt4 key购买 nike

我想将小数点逗号(德语键盘)重新映射到某些 JTextField 的一个点。我已经尝试过 getInputMap()getActionMap,但到目前为止没有任何效果。到目前为止,我得到的最好结果是逗号根本不起作用。

我认为应该有一些使用输入映射的方法,但是如何呢?

下面是一个小例子程序,有大神能指点一下在注释处填什么吗?或者这是完全错误的吗?

import javax.swing.InputMap;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

public class KeyTest extends JFrame {

private JTextField textField;

public KeyTest() {
textField = new JTextField();
add(textField);

InputMap map = textField.getInputMap();
map.put(KeyStroke.getKeyStroke(','), /* what to do here? */);
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
KeyTest test = new KeyTest();
test.pack();
test.setVisible(true);
}
});
}
}

编辑:也许我的问题不够清楚。正常号码是没有问题的。我只是想让用户输入日期时更方便。这些在德国采用 "DD.MM.YYYY" 格式。这意味着,您不能只使用数字键盘输入日期,因为我们没有小数点,只有逗号。这就是为什么我想在用于输入日期的文本字段中用点替换逗号。

纯文本和数字的所有输入字段都可以正常工作,甚至日期输入也可以。我只是想让打字更容易。就在昨天,我注意到 Libreoffice 中的一个类似功能,其中数字小键盘上的逗号(我有一个德语键盘)在数字单元格中被自动替换(我的语言环境设置为英语),但仅在包含数值的单元格中。这也会在您键入时发生。

最佳答案

  • 必须使用 JFormattedTextFieldJSpinner使用 Number Formatter,而不是普通的 JTextField,我没有设置 Locale

  • 的小数分隔符问题
  • 还有第二种方法可以使用DocumentFilter而不是 InputMask,用于过滤不需要的 whitespacenon_numeric 字符,并将点更改为所需的小数点分隔符

  • 注意使用DocumentFilter,输出自JFormattedTextFieldJSpinner Java 内部将 dot 作为 ASCII 十进制分隔符,与 DocumentFilter 相比, View 和模型(Swing Document)之间只有区别,也有返回改变的分组(空格)和分隔符

关于java - JTextField:将十进制逗号重新映射到点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11901324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com