是一个计算总成绩的程序,有四个框:labs,midterm1,midterm2,final,其中final为总成绩,等于labs*0.3+midterm1*0.35+midterm2*0.35要求在labs,midterm1,midterm2这三个框中输入了新数据(1-100)之后,final框中同时更新数据,但我这个程序只能做到在labs,midterm1,midterm2这三个框中输入了新数据再按一下回车才能在final框中更新数据,请问如何修改能实现同步更新?import javax.swing.*;
import java.awt.event.*;
import java.awt.*;public class gradeCal extends JFrame {
private JLabel labs;
private JLabel mt1;
private JLabel mt2;
private JLabel fm;
private JTextField LABS;
private JTextField MT1;
private JTextField MT2;
private JTextField FM;
private class listener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
double labMark = Double.parseDouble(LABS.getText());
double mt1Mark = Double.parseDouble(MT1.getText());
double mt2Mark = Double.parseDouble(MT2.getText());
double finalMark = labMark*0.3 + mt1Mark*0.35 +mt2Mark*0.35;
FM.setText(new Double(finalMark).toString());
}
}
public gradeCal()
{
super("Java Calc");
labs = new JLabel("Labs",JLabel.LEFT);
mt1 = new JLabel("MidTerm1",JLabel.LEFT);
mt2 = new JLabel("MidTerm2",JLabel.LEFT);
fm = new JLabel("Final Mark",JLabel.LEFT);
LABS = new JTextField(10);
LABS.setText("0");
LABS.addActionListener(new listener());
MT1 = new JTextField(10);
MT1.setText("0");
MT1.addActionListener(new listener());
MT2 = new JTextField(10);
MT2.setText("0");
MT2.addActionListener(new listener());
FM = new JTextField(10);
FM.setText("0");
FM.addActionListener(new listener());
GridLayout layout = new GridLayout(4,2,0,100);
JPanel panel = new JPanel(layout);
panel.add(labs);
panel.add(LABS);
panel.add(mt1);
panel.add(MT1);
panel.add(mt2);
panel.add(MT2);
panel.add(fm);
panel.add(FM);
this.setSize(600, 800);
add(panel);
}
public static void main(String[] args) {
gradeCal g = new gradeCal();
g.setVisible(true);
g.setDefaultCloseOperation(EXIT_ON_CLOSE);
}}
import java.awt.event.*;
import java.awt.*;public class gradeCal extends JFrame {
private JLabel labs;
private JLabel mt1;
private JLabel mt2;
private JLabel fm;
private JTextField LABS;
private JTextField MT1;
private JTextField MT2;
private JTextField FM;
private class listener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
double labMark = Double.parseDouble(LABS.getText());
double mt1Mark = Double.parseDouble(MT1.getText());
double mt2Mark = Double.parseDouble(MT2.getText());
double finalMark = labMark*0.3 + mt1Mark*0.35 +mt2Mark*0.35;
FM.setText(new Double(finalMark).toString());
}
}
public gradeCal()
{
super("Java Calc");
labs = new JLabel("Labs",JLabel.LEFT);
mt1 = new JLabel("MidTerm1",JLabel.LEFT);
mt2 = new JLabel("MidTerm2",JLabel.LEFT);
fm = new JLabel("Final Mark",JLabel.LEFT);
LABS = new JTextField(10);
LABS.setText("0");
LABS.addActionListener(new listener());
MT1 = new JTextField(10);
MT1.setText("0");
MT1.addActionListener(new listener());
MT2 = new JTextField(10);
MT2.setText("0");
MT2.addActionListener(new listener());
FM = new JTextField(10);
FM.setText("0");
FM.addActionListener(new listener());
GridLayout layout = new GridLayout(4,2,0,100);
JPanel panel = new JPanel(layout);
panel.add(labs);
panel.add(LABS);
panel.add(mt1);
panel.add(MT1);
panel.add(mt2);
panel.add(MT2);
panel.add(fm);
panel.add(FM);
this.setSize(600, 800);
add(panel);
}
public static void main(String[] args) {
gradeCal g = new gradeCal();
g.setVisible(true);
g.setDefaultCloseOperation(EXIT_ON_CLOSE);
}}
public void changedUpdate(DocumentEvent e) {
}
public void insertUpdate(DocumentEvent e) {
try {
double labMark = Double.parseDouble(LABS.getText());
double mt1Mark = Double.parseDouble(MT1.getText());
double mt2Mark = Double.parseDouble(MT2.getText());
double finalMark = labMark * 0.3 + mt1Mark * 0.35 + mt2Mark * 0.35;
FM.setText(new Double(finalMark).toString());
} catch (Exception e1) {
}
}
public void removeUpdate(DocumentEvent e) {
try {
double labMark = Double.parseDouble(LABS.getText());
double mt1Mark = Double.parseDouble(MT1.getText());
double mt2Mark = Double.parseDouble(MT2.getText());
double finalMark = labMark * 0.3 + mt1Mark * 0.35 + mt2Mark * 0.35;
FM.setText(new Double(finalMark).toString());
} catch (Exception e1) {
}
}
}
LABS.setText("0");
LABS.getDocument().addDocumentListener(new listener());
MT1 = new JTextField(10);
MT1.setText("0");
MT1.getDocument().addDocumentListener(new listener());
MT2 = new JTextField(10);
MT2.setText("0");
MT2.getDocument().addDocumentListener(new listener());
FM = new JTextField(10);
FM.setText("0");
FM.getDocument().addDocumentListener(new listener());