gpt4 book ai didi

Java:如何删除 JFormattedTextField 中的空格?

转载 作者:搜寻专家 更新时间:2023-11-01 03:48:36 25 4
gpt4 key购买 nike

所以,我有一个 JFormattedTextField 让用户输入一个数字。数字可以从 1 到 99,所以我使用了 MaskFormatter("##")。但是,出于某种原因,如果我什么都不输入,它会在文本字段中放置 2 个空格。这很烦人,因为如果用户在文本字段的中心单击以输入数字,它会将光标放在 2 个空格的末尾(因为空格比数字短),因此他们必须返回以输入数字。

如何删除这些空格并使 textfield 为空?我尝试执行 setText("") 但它没有执行任何操作。

代码如下:

private JFormattedTextField sequenceJTF = new JFormattedTextField();
private JLabel sequenceLabel = new JLabel("Enter a number :");

public Window(){
this.setTitle("Generic title");
this.setSize(350, 250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);

JPanel container = new JPanel();


DefaultFormatter format = new DefaultFormatter();
format.setOverwriteMode(false); //prevents clearing the field if user enters wrong input (happens if they enter a single digit)
sequenceJTF = new JFormattedTextField(format);
try {
MaskFormatter mf = new MaskFormatter("##");
mf.install(sequenceJTF); //assign the maskformatter to the text field
} catch (ParseException e) {}
sequenceJTF.setPreferredSize(new Dimension(20,20));
container.add(sequenceLabel);
container.add(sequenceJTF);
this.setContentPane(container);
}

最佳答案

在你的mf.install(sequenceJTF);下的java core中有下一段代码:

...
ftf.setText(valueToString(ftf.getValue())); // ftf - JFormattedTextField
...

如果没有字符,valueToString() 返回两个空格,用于匹配掩码"##"。空格取自 MaskFormatter.getPlaceholderCharacter(),它将空格作为默认字符返回。

我的解决方案不是很好,但它有效:

try {
MaskFormatter mf = new MaskFormatter("##") {
@Override
public char getPlaceholderCharacter() {
return '0'; // replaces default space characters with zeros
}
};
mf.install(sequenceJTF); //assign the maskformatter to the text field
} catch (ParseException e) {
e.printStackTrace(); // always, remember, ALWAYS print stack traces
}

关于Java:如何删除 JFormattedTextField 中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35406810/

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