[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);
  }
}
程序运行界面:(这个论坛不能传图片,我只好将图片传于其它地方,做个链接)
http://www2.freep.cn/Photo.php?url=photo36/0705241023097955.jpg
问题:
  为何向第一个TextField中输入内容后,能将第三个TextField的内容清空;而向第二个TextField中输入内容时,第三个TextField的内容不能清空?

解决方案 »

  1.   

    public void KeyPressed(KeyEvent Event)这条语句里的KeyPressed里的k是小写,小写
      

  2.   

    改成这样就可以了,keyPressed方法开头k是小写
    hoursWorkedJTextField.addKeyListener(
          new KeyAdapter()
          {
            public void keyPressed(KeyEvent Event)
            {
              hoursWorkedJTextFieldKeyPressed(Event);
            }
          });
      

  3.   

    但是第一个TextField的事件代码, 里面的KeyEvent,也是大写的,当向它输入内容时,它是可以使第三个TextField的内容清空的啊!第一个TextField的注册事件侦听器代码:
    hourlyWageJTextField.addKeyListener( 
          new KeyAdapter()
          {
            public void keyPressed(KeyEvent Event)
            {
              hourlyWageJTextFieldKeyPressed(Event);
            }
          });
      

  4.   

    不是KeyEvent里面的K,而是keyPressed里面的k
      

  5.   

    我说的是keyPressed这个方法里的k,必须小写