【问题标题】:jTextField update in real time based on other jTextFields values?jTextField 根据其他 jTextFields 值实时更新?
【发布时间】:2014-05-10 19:42:33
【问题描述】:

我有一个小问题要问。

问题是我需要一个 jTextField 来根据用户在其他 3 个其他 jTextField 中的输入来更新其值。 一个 txtfield 是“idQuarto”,这基本上就是我知道房间价格的方式。 其他 txtfields 是 Dates (Checkin & Checkout),我计算它们之间的天数。

这是我需要帮助的地方,文本字段(总计)是我希望它根据用户输入的日期和房间 ID 更新的地方。 (ID Quarto 的价格 * 天数)。

这是程序的图片:http://gyazo.com/a7e47227a0be9f5720c005e61a1951d9

希望大家明白我的意思。

谢谢。

【问题讨论】:

    标签: java jtextfield


    【解决方案1】:

    这是我需要帮助的地方,文本字段(总计)是我希望它根据用户输入的日期和房间 ID 更新的地方。 (ID Quarto 的价格 * 天数)。

    FocusListener 将在失去或获得比KeyListener 更好的焦点时触发。

    FocusAdapter updateTotalFocusAdapter = new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent arg0) {
             totalTextField.setText([Price of ID Quarto * Days]);
        }
    };
    
    checkInDateTextField.addFocusListener(updateTotalFocusAdapter);
    checkOutDateTextField.addFocusListener(updateTotalFocusAdapter);
    idQuartoTextField.addFocusListener(updateTotalFocusAdapter);
    

    【讨论】:

      【解决方案2】:

      尝试将keyAdapter 添加到您的 textFields 中,这样会向您的更新方法发送消息

      A = new JTextField(); A.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent arg0) { updateField(); } });

      任何时候使用适配器在文本字段中键入一个键,在这种情况下,它将调用 updateField() 方法。

      【讨论】:

      • -1,不要使用 KeyListener。使用 Swing 时,您可以使用 DocumentListener。 DocumentListener 是更高级别的 API,如果可用,应在低级 API 上使用。阅读 Swing 教程中关于 [如何编写 DocumentListener ](docs.oracle.com/javase/tutorial/uiswing/events/…) 的部分以获取更多信息。此外,您的建议无论如何都不起作用,因为在调用 keyPressed() 方法时 Document 尚未更新。
      猜你喜欢
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      相关资源
      最近更新 更多