[code]
import javax.swing.*;
import java.awt.*;
import java.text.*;
import java.awt.event.*;
public class WageCalculator extends JFrame
{
  private JLabel hourlyWageJLabel;
  private JTextField hourlyWageJTextField;
  
  private JLabel hoursWorkedJLabel;
  private JTextField hoursWorkedJTextField;
  
  private JLabel grossWagesJLabel;
  private JTextField grossWagesJTextField;
  
  private JButton calculateJButton;
  
  double hourlyWage;
  double hoursWorked;
  double wages;
  final double HOUR_LIMIT=40.0;
  DecimalFormat dollars;
  
  public WageCalculator()
  {
    createUserInterface();
  }
  public void createUserInterface()
  {
    Container contentPane=this.getContentPane();
    contentPane.setLayout(null);
    
    hourlyWageJLabel=new JLabel();
    hourlyWageJLabel.setBounds(16,16,90,21);
    hourlyWageJLabel.setText("Hourly wage");
    contentPane.add(hourlyWageJLabel);
    
    hourlyWageJTextField=new JTextField();
    hourlyWageJTextField.setBounds(115,16,90,21);
    hourlyWageJTextField.setHorizontalAlignment(JTextField.RIGHT);
    contentPane.add(hourlyWageJTextField);
    hourlyWageJTextField.addKeyListener( 
      new KeyAdapter()
      {
        public void keyPressed(KeyEvent Event)
        {
          hourlyWageJTextFieldKeyPressed(Event);
        }
      });
    
    hoursWorkedJLabel=new JLabel();
    hoursWorkedJLabel.setBounds(16,57,90,21);
    hoursWorkedJLabel.setText("Hours worked");
    contentPane.add(hoursWorkedJLabel);
    
    hoursWorkedJTextField=new JTextField();
    hoursWorkedJTextField.setBounds(115,57,90,21);
    hoursWorkedJTextField.setHorizontalAlignment(JTextField.RIGHT);
    contentPane.add(hoursWorkedJTextField);
    hoursWorkedJTextField.addKeyListener(
      new KeyAdapter()
      {
        public void KeyPressed(KeyEvent Event)
        {
          hoursWorkedJTextFieldKeyPressed(Event);
        }
      });
    
    grossWagesJLabel=new JLabel();
    grossWagesJLabel.setBounds(16,97,90,21);
    grossWagesJLabel.setText("Gross wages");
    contentPane.add(grossWagesJLabel);
    
    grossWagesJTextField=new JTextField();
    grossWagesJTextField.setBounds(115,97,90,21);
    grossWagesJTextField.setHorizontalAlignment(JTextField.RIGHT);
    grossWagesJTextField.setEditable(false);
    contentPane.add(grossWagesJTextField);
    
    calculateJButton=new JButton();
    calculateJButton.setBounds(115,135,90,21);
    calculateJButton.setText("Calculate");
    contentPane.add(calculateJButton);
    calculateJButton.addActionListener(
      new ActionListener()
      {
        public void actionPerformed(ActionEvent Event)
        {
          calculateJButtonActionPerformed(Event);
        }
       });
    
    setTitle("Wage Calculator");
    setSize(230,200);
    setLocation(150,200);
    setVisible(true);
  }
  private void calculateJButtonActionPerformed(ActionEvent e)
  {
    hourlyWage=Double.parseDouble(hourlyWageJTextField.getText());
    hoursWorked=Double.parseDouble(hoursWorkedJTextField.getText());
    if(hoursWorked<=HOUR_LIMIT)
    {
      wages=hourlyWage*hoursWorked;
    }
    else
    {
      wages=hourlyWage*HOUR_LIMIT;
      wages+=(hoursWorked-HOUR_LIMIT)*hourlyWage*1.5;
    }
    dollars=new DecimalFormat("$0.00");
    grossWagesJTextField.setText(dollars.format(wages));
  }
  
  private void hourlyWageJTextFieldKeyPressed(KeyEvent e)
  {
    grossWagesJTextField.setText("");
  }
  
  private void hoursWorkedJTextFieldKeyPressed(KeyEvent e)
  {
    grossWagesJTextField.setText("");
  }
  
  public static void main(String args[])
  {
    WageCalculator application=new WageCalculator();
    application.setDefaultCloseOperation(EXIT_ON_CLOSE);
  }
}
[/code]
程序运行界面:问题:
  为何向第一个TextField中输入内容后,能将第三个TextField的内容清空;而向第二个TextField中输入内容时,第三个TextField的内容不能清空?