java - 如何使 JTextField 根据输入更改其他框

标签 java swing jtextfield auto-update

我正在尝试编写一个代码,其中弹出三个字段,它将乘以前两个输入并自动更新第三个字段,并在您输入值时更改最后一个字段的值和文本属性进入第一个字段?

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Solver implements ActionListener {

    void actionPerformed(ActionEvent E){



        JTextField xField = new JTextField(5);
        JTextField yField = new JTextField(5);
        JTextField zField = new JTextField(5);

        JPanel myPanel = new JPanel();
        myPanel.add(new JLabel("x:"));
        myPanel.add(xField);
        myPanel.add(Box.createHorizontalStrut(15));
        myPanel.add(new JLabel("y:"));
        myPanel.add(yField);
        myPanel.add(Box.createHorizontalStrut(15));
        myPanel.add(new JLabel("z:"));
        myPanel.add(zField);

        int result = JOptionPane.showConfirmDialog(null, myPanel,
            "please enter X and Y value", JOptionPane.OK_CANCEL_OPTION);
        double x = Double.parseDouble(xField.getText());
        double y = Double.parseDouble(yField.getText());
        if(result == JOptionPane.OK_OPTION) {
            System.out.println(x+10.0);
            System.out.println(y + 10);

        }
    }
}

现在我已经打印了两个初始值加10只是为了确保它们设置为 double ,但是如果有人可以帮助我将zField更改为任何算术,我将不胜感激(并且如果有人可以摆脱actionPerformed 与 ActionLister 冲突的错误也将不胜感激。)

最佳答案

你可以...

将一个或多个 ActionListener 附加到您正在显示的 JTextField,并在调用其 actionPerformed 方法时执行所需的算术。

问题在于,用户需要按下“action”键(通常是 Enter)来触发 ActionListener

参见How to write an action listener了解更多详情。

你可以...

使用 FocusListener 并监视文本字段上的 focusLost 事件,并在焦点丢失时执行所需的算术。

这样做的问题是用户需要在触发 focusLost 事件之前离开最后一个字段,而且这并不立即明显

参见How to write a focus listener了解更多详情

你可以...

使用DocumentListener,它会在字段更新时实时通知您。

一旦确定两个字段都处于有效状态(即不为空且包含适当的数字),您就可以执行所需的算术运算

参见How to write a Document Listener了解更多详情

经过思考...

无论您选择哪个方向,我都会亲自创建一个自定义类,它实现所需的接口(interface)并且需要对每个字段的引用。这样它将能够独立执行所需的操作并更新所需的字段

关于java - 如何使 JTextField 根据输入更改其他框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738796/

相关文章:

java - 从自定义渲染器获取方法 getTreeCellRendererComponent 内的 JTree 节点文本

java - 创建一个抑制 CustomTooltip 的自定义 JButton

java - 单击外部时如何将文本设置为 JTextField?

Java:日期操作

java - 将 JFileChooser 添加到 Eclipse Window Builder

java - 索引意外设置为 3040

java - 4年后的学费总额

java - 了解 Spring 重定向

java - 带有 JRE 1.5 (IE6) 的小程序无法通过 HTTPS 打开 HTML 页面,适用于 JRE1.6

java - 在空 JTextField 中按下退格键时禁用蜂鸣声