题目如下:
当某个JTEXFIELD拥有焦点时,若按下ENTER键,则会产生一个EVENT的事件对象并相应的调用actionPerformed事件处理~
actionPerformed事件处理我写出来~~前面的键盘事件怎么处理??附上我写的代码:
// Exercise 13.12: TemperatureConversion.java
import java.awt.*;public class TemperatureConversion extends JFrame
{
// JLabel and JTextField for Fahrenheit
private JLabel fahrenheitJLabel;
private JTextField fahrenheitJTextField;
// JLabel and JTextField for Celsius
private JLabel celsiusJLabel;
private JTextField celsiusJTextField; // DecimalFormat for temperatures
DecimalFormat temperature = new DecimalFormat( "0.0" ); // no-argument constructor
public TemperatureConversion()
{
createUserInterface();
} // create and position GUI components; register event handlers
private void createUserInterface()
{
// get content pane for attaching GUI components
Container contentPane = getContentPane(); // enable explicit positioning of GUI components
contentPane.setLayout( null ); // set up fahrenheitJLabel
fahrenheitJLabel = new JLabel();
fahrenheitJLabel.setBounds( 12, 24, 72, 21 );
fahrenheitJLabel.setText( "Fahrenheit:" );
contentPane.add( fahrenheitJLabel ); // set up fahrenheitJTextField
fahrenheitJTextField = new JTextField();
fahrenheitJTextField.setBounds( 78, 24, 64, 21 );
fahrenheitJTextField.setHorizontalAlignment(
JTextField.RIGHT );
contentPane.add( fahrenheitJTextField );
fahrenheitJTextField.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
amountNeededJTextAreaActionPerformed(e);
}
});// anonymous inner class
// event handler called when enter is pressed in
// fahrenheitJTextField
// set up celsiusJLabel
celsiusJLabel = new JLabel();
celsiusJLabel.setBounds( 162, 24, 56, 21 );
celsiusJLabel.setText( "Celsius:" );
contentPane.add( celsiusJLabel ); // set up celsiusJTextField
celsiusJTextField = new JTextField();
celsiusJTextField.setBounds( 212, 24, 64, 21 );
celsiusJTextField.setHorizontalAlignment( JTextField.RIGHT );
contentPane.add( celsiusJTextField );
celsiusJTextField.addActionListener( new ActionListener() // anonymous inner class
{
// event handler called when enter is pressed in
// celsiusJTextField
public void actionPerformed( ActionEvent event )
{
amountNeededJTextAreaActionPerformed(event);
} } // end anonymous inner class ); // end call to addActionListener // set properties of application's window
setTitle( "Temperature Converter" ); // set title-bar string
setSize( 306, 100 ); // set window size
setVisible( true ); // show window } // end method createUserInterface protected void amountNeededJTextAreaActionPerformed(KeyEvent event) {
// TODO Auto-generated method stub
}protected void amountNeededJTextAreaActionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
double fahrenheit = Double.parseDouble(fahrenheitJTextField.getText());
double Celsius = Double.parseDouble(celsiusJTextField.getText());
Celsius = (fahrenheit-32)*(5.0/9.0);
celsiusJTextField.setText(String.valueOf(temperature.format(Celsius)));
}// main method
public static void main( String[] args )
{
TemperatureConversion application =
new TemperatureConversion();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
} // end method main} // end class TemperatureConversion
当某个JTEXFIELD拥有焦点时,若按下ENTER键,则会产生一个EVENT的事件对象并相应的调用actionPerformed事件处理~
actionPerformed事件处理我写出来~~前面的键盘事件怎么处理??附上我写的代码:
// Exercise 13.12: TemperatureConversion.java
import java.awt.*;public class TemperatureConversion extends JFrame
{
// JLabel and JTextField for Fahrenheit
private JLabel fahrenheitJLabel;
private JTextField fahrenheitJTextField;
// JLabel and JTextField for Celsius
private JLabel celsiusJLabel;
private JTextField celsiusJTextField; // DecimalFormat for temperatures
DecimalFormat temperature = new DecimalFormat( "0.0" ); // no-argument constructor
public TemperatureConversion()
{
createUserInterface();
} // create and position GUI components; register event handlers
private void createUserInterface()
{
// get content pane for attaching GUI components
Container contentPane = getContentPane(); // enable explicit positioning of GUI components
contentPane.setLayout( null ); // set up fahrenheitJLabel
fahrenheitJLabel = new JLabel();
fahrenheitJLabel.setBounds( 12, 24, 72, 21 );
fahrenheitJLabel.setText( "Fahrenheit:" );
contentPane.add( fahrenheitJLabel ); // set up fahrenheitJTextField
fahrenheitJTextField = new JTextField();
fahrenheitJTextField.setBounds( 78, 24, 64, 21 );
fahrenheitJTextField.setHorizontalAlignment(
JTextField.RIGHT );
contentPane.add( fahrenheitJTextField );
fahrenheitJTextField.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
amountNeededJTextAreaActionPerformed(e);
}
});// anonymous inner class
// event handler called when enter is pressed in
// fahrenheitJTextField
// set up celsiusJLabel
celsiusJLabel = new JLabel();
celsiusJLabel.setBounds( 162, 24, 56, 21 );
celsiusJLabel.setText( "Celsius:" );
contentPane.add( celsiusJLabel ); // set up celsiusJTextField
celsiusJTextField = new JTextField();
celsiusJTextField.setBounds( 212, 24, 64, 21 );
celsiusJTextField.setHorizontalAlignment( JTextField.RIGHT );
contentPane.add( celsiusJTextField );
celsiusJTextField.addActionListener( new ActionListener() // anonymous inner class
{
// event handler called when enter is pressed in
// celsiusJTextField
public void actionPerformed( ActionEvent event )
{
amountNeededJTextAreaActionPerformed(event);
} } // end anonymous inner class ); // end call to addActionListener // set properties of application's window
setTitle( "Temperature Converter" ); // set title-bar string
setSize( 306, 100 ); // set window size
setVisible( true ); // show window } // end method createUserInterface protected void amountNeededJTextAreaActionPerformed(KeyEvent event) {
// TODO Auto-generated method stub
}protected void amountNeededJTextAreaActionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
double fahrenheit = Double.parseDouble(fahrenheitJTextField.getText());
double Celsius = Double.parseDouble(celsiusJTextField.getText());
Celsius = (fahrenheit-32)*(5.0/9.0);
celsiusJTextField.setText(String.valueOf(temperature.format(Celsius)));
}// main method
public static void main( String[] args )
{
TemperatureConversion application =
new TemperatureConversion();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
} // end method main} // end class TemperatureConversion
protected void amountNeededJTextAreaActionPerformed(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.VK_ENTER) {
double fahrenheit = Double.parseDouble(fahrenheitJTextField.getText());
double Celsius = Double.parseDouble(celsiusJTextField.getText());
Celsius = (fahrenheit-32)*(5.0/9.0);
celsiusJTextField.setText(String.valueOf(temperature.format(Celsius)));
}
}
再分别为fahrenheitJTextField ,celsiusJTextField 添加addKeyListener