java - (Java Swing) JTextField 更新 "too late"

标签 java swing jtextfield keylistener

这是来自英尺<->米转换器的代码示例。我的问题:它不会更新当前输入,例如:如果 JTextField 中的文本是“50”,则 textField.getText() 仅给出字符串“5”,因此 双结果将是5.0。因此,JTextField 中的“5”会在 double result = Double.parseDouble(textField.getText());“Empty String”中给出错误。预先感谢您的回答!

public static void addKL(JTextField textField, JTextField textField2, String name) {

    textField.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent evt) {
            if(evt.getKeyCode() == KeyEvent.VK_1||evt.getKeyCode() == KeyEvent.VK_2||evt.getKeyCode() == KeyEvent.VK_3||evt.getKeyCode() == KeyEvent.VK_4||evt.getKeyCode() == KeyEvent.VK_5||evt.getKeyCode() == KeyEvent.VK_6||evt.getKeyCode() == KeyEvent.VK_7||evt.getKeyCode() == KeyEvent.VK_9||evt.getKeyCode() == KeyEvent.VK_COLON||evt.getKeyCode() == KeyEvent.VK_BACK_SPACE                           ) {
                double result = Double.parseDouble(textField.getText());
                if(name=="ftFIELD") {
                    textField2.setText("" + result/3.2808);
                }
                else if(name=="mFIELD") {
                    textField2.setText("" + result*3.2808);
                }
            }
        }
    });
}

注意:如果 KeyEvent 无效,当然会缺少 else,但在这个错误未修复之前我不想继续编码。

最佳答案

您使用了错误的事件,请尝试使用keyReleased。还修复了字符串比较

    text.addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent evt) {
            if(evt.getKeyCode() == KeyEvent.VK_1||evt.getKeyCode() == KeyEvent.VK_2||evt.getKeyCode() == KeyEvent.VK_3||evt.getKeyCode() == KeyEvent.VK_4||evt.getKeyCode() == KeyEvent.VK_5||evt.getKeyCode() == KeyEvent.VK_6||evt.getKeyCode() == KeyEvent.VK_7||evt.getKeyCode() == KeyEvent.VK_9||evt.getKeyCode() == KeyEvent.VK_COLON||evt.getKeyCode() == KeyEvent.VK_BACK_SPACE                           ) {
                double result = Double.parseDouble(text.getText());

                if("ftFIELD".equals(name)) {
                    textField2.setText("" + result/3.2808);
                }
                else if("mFIELD".equals(name)) {
                    textField2.setText("" + result*3.2808);
                }
            }
        }
    });

关于java - (Java Swing) JTextField 更新 "too late",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30583545/

相关文章:

java - 滚动面板不只在图像上显示拇指

java - JTextField 仅将输入限制为某些字符

java - JTextField 突然变小了

java - 由于端口问题,JCo IDoc 服务器无法接收消息

java - 将数据从 Microsoft SQL Server 移动到 Clouer Hadoop 的 Web 应用程序

java - Spring batch JDBCPagingItemReader、ThreadPoolTask​​Executor 和 OpenShift 中的多个 pod

java - 单选按钮组和额外选项

java - 创建一个带有 swing 布局的简单控制台

java - 在 Jetty 应用程序中部署时,Stanford CoreNLP 找不到正确版本的 ejml

java - 如何在 java swing 中为文本字段使用过滤器?