JTextfield通过程序添加

时间:2011-12-17 07:17:19

标签: java swing

我的表单中有3个JText字段。前两个字段用于获取mark1和mark2,最后一个用于显示mark1和mark2的总和。

问题是当我在mark1中输入一个值时,它应该显示在total字段中。另外,当我输入mark2值时,需要使用java代码将mark1值加上mark2字段值立即添加到total字段中吗?

注意我不想使用按钮来计算总和。

1 个答案:

答案 0 :(得分:4)

这是一个例子。

enter image description here

package sof;

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class Test extends JFrame {
    JTextField text1 = new JTextField();
    JTextField text2 = new JTextField();
    JTextField text3 = new JTextField();

    public Test() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        CustomDocListener cd = new CustomDocListener();

        text1.getDocument().addDocumentListener(cd);
        text2.getDocument().addDocumentListener(cd);

        JPanel pnl = new JPanel(new GridLayout(3, 1));
        pnl.add(text1);
        pnl.add(text2);
        pnl.add(text3);
        this.add(pnl);
        setSize(200, 100);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Test().setVisible(true);
    }

    class CustomDocListener implements DocumentListener{
        public void changedUpdate(DocumentEvent e) {
        }

        public void insertUpdate(DocumentEvent e) {
            fireChange();
        }

        public void removeUpdate(DocumentEvent e) {
            fireChange();
        }

        private void fireChange(){
            int value1 = 0, value2 = 0;
            try {
                value1 = Integer.parseInt(text1.getText());
            } catch (NumberFormatException ne) {
                value1 = 0;
            }
            try {
                value2 = Integer.parseInt(text2.getText());
            } catch (NumberFormatException ne) {
                value2 = 0;
            }
            text3.setText(value1 + value2 + "");
        }

    }
}