【发布时间】:2016-04-14 10:24:26
【问题描述】:
我无法理解为什么我的应用程序无法运行。最近才开始使用编程。
我遇到的主要错误是 FahrenHandler,但我不确定该类的事件处理程序和动作侦听器应该放在哪里。
这是我的两个 java 文件,它们是 ConverterT 包的一部分:
ConverterFrame.java
package ConverterT;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Ahmed
*/
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
public class ConverterFrame extends JFrame {
private final JTextField celciusField; // text field for celcius
private final JLabel celciusLabel; //label for celcius
private final JTextField fahrField; //text field for fahrenheit
private final JLabel fahrLabel; //label for fahr
private double celsius, fahrenheit;
//Action Listener definition for textFields
//ConverterFrame constructor adds JTextFields to JFrame
public ConverterFrame() {
super("Temperature");
setLayout(new FlowLayout());
//construct textfield with columns
celciusField = new JTextField(10);
add(celciusField); //add textField1 to JFrame
celciusLabel = new JLabel("Enter Degrees in Celcius");
add(celciusLabel); //add textField2 to JFrame
fahrField = new JTextField(10);
add(fahrField); // add fahr field to JFrame
fahrLabel = new JLabel("Enter Degrees in Fahrenheit");
add(fahrLabel); //add fahr Label to JFrame
//register event handlers
CelsHandler handlerCelcius = new CelsHandler();
celciusField.addActionListener(handlerCelcius);
FahrenHandler handlerFahren = new FahrenHandler();
fahrField.addActionListener(handlerFahren);
}// end ConverterFrame constructor
//private inner class for event handling
private class CelsHandler implements ActionListener {
@Override
//process textfield events
public void actionPerformed(ActionEvent event) {
//user pressed enter in JTextField celciusField
celsius = Double.parseDouble(celciusField.getText());
//calculate the equivalent temp in fahrenheit
fahrenheit = 9.0 / 5.0 * celsius + 32;
//Display the result in fahrenheit field
fahrField.setText(String.format("%.2f", fahrenheit));
}
FahrenHandler handlerFahren = new FahrenHandler();
private class FahrenHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
//Get the data from the text field once the user presses enter
celsius = Double.parseDouble(celciusField.getText());
//Calculate the equivalent temp in fahrenheit
fahrenheit = 5.0 / 9.0 * (celsius - 32);
//Display the result in celsiusField
celciusField.setText(String.format("%.2f", celsius));
}
}
}
}
/* if(event.getSource() == celciusField)
int tempFahr = (int) ((Double.parseDouble(celciusField.getText())) * 1.8 + 32);
event.getActionCommand());
//user pressed Enter in JTextField fahrField
else if (event.getSource() == fahrField)
int tempCel = (int) ((5.0/9.0 * (((Double.parseDouble(fahrField.getText())) -32))));
event.getActionCommand());
//display JTextField content
JOptionPane.showMessageDialog(ConverterFrame.this, string);
*/
ConverterTest.Java
package ConverterT;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Ahmed
*/
import javax.swing.JFrame;
public class ConverterTest {
public static void main(String[] args) {
ConverterFrame converterFrame = new ConverterFrame();
converterFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
converterFrame.setSize(350, 100);
converterFrame.setVisible(true);
}
}//end class ConverterTest
【问题讨论】:
-
你遇到了什么错误?
-
请给最佳答案打分。