gpt4 book ai didi

java - 无法将字符 ',' 替换为 '.'

转载 作者:行者123 更新时间:2023-12-01 21:26:25 25 4
gpt4 key购买 nike

我想用句点替换逗号。

我尝试了两种方法,但都不起作用。

方法一:

if(evt.getKeyChar() == ','){ evt.setKeyChar('.');}

方法2:

if(evt.getKeyChar() == KeyEvent.VK_COMMA){ evt.setKeyChar(KeyEvent.VK_PERIOD);}

我试图找到一些可以帮助我的东西,但根本没有这样的线程。

如果您需要更多代码,我可以添加它,但我真的不知道你们是否需要它,所以我没有添加它。

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
// TODO add your handling code here:

char inte=evt.getKeyChar();

if (!(Character.isDigit(inte)|| inte == KeyEvent.VK_COMMA ||inte == KeyEvent.VK_PERIOD || inte==KeyEvent.VK_BACK_SPACE) || inte==KeyEvent.VK_DELETE){
if(evt.getKeyChar() == KeyEvent.VK_COMMA){ evt.setKeyChar(KeyEvent.VK_PERIOD);}
getToolkit().beep();
evt.consume();
}
}

这就是我发布的这些行的全部内容,我在 java 方面还是个新手。所以我会让你们自己决定。

尽管程序获取了数字,但除了“.”之外,不允许将任何其他内容放入其中。和 ',' 但当我在 float 中使用 , 而不是 .有错误,这就是为什么我想用 '.' 替换它

最佳答案

你的问题实际上是一个XY Problem当您问“如何解决此代码问题”时,最佳解决方案是完全使用不同的方法。

切勿将 KeyListener 添加到 JTextComponent,因为这可能会导致危险的副作用。更好的方法是使用添加到 JTextField 文档中的 DocumentListener 或 DocumentFilter。监听器在文档更改后使用react,而过滤器在文档更改之前使用react,允许您在更改发生之前“过滤”更改。

如果您想更改输入到 JTextField 中的文本,我建议采用 DocumentFilter 路线:

((PlainDocument) myJTextField.getDocument()).setDocumentFilter(....)

例如,

import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import javax.swing.text.PlainDocument;

public class SwapCommaWithPeriod extends JPanel {
private JTextField field = new JTextField(40);

public SwapCommaWithPeriod() {
add(field);

((PlainDocument) field.getDocument()).setDocumentFilter(new DocumentFilter() {
@Override
public void insertString(FilterBypass fb, int offset, String text, AttributeSet attr)
throws BadLocationException {
text = text.replace(",", ".");
super.insertString(fb, offset, text, attr);
}

@Override
public void replace(FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
text = text.replace(",", ".");
super.replace(fb, offset, length, text, attrs);
}
});
}

private static void createAndShowGui() {
SwapCommaWithPeriod mainPanel = new SwapCommaWithPeriod();

JFrame frame = new JFrame("Swap Comma With Period");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}

关于java - 无法将字符 ',' 替换为 '.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38109895/

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