我的表单中有3个JText字段。前两个字段用于获取mark1和mark2,最后一个用于显示mark1和mark2的总和。
问题是当我在mark1中输入一个值时,它应该显示在total字段中。另外,当我输入mark2值时,需要使用java代码将mark1值加上mark2字段值立即添加到total字段中吗?
注意我不想使用按钮来计算总和。
答案 0 :(得分:4)
这是一个例子。
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 + "");
}
}
}