我正在开发一个简单的Java GUI,但是当我应用它时,addActionListener
的方法JButton
出现了错误。这是我的代码。该错误标有ERROR
。
import javax.swing.*;
import java.awt.event.*;
public class KiloConverter extends JFrame {
private JPanel panel; //To reference a panel
private JLabel messageLabel; //To reference a label
private JTextField kiloTextField; //To reference a text field
private JButton calcButton; //To reference a button
private final int WINDOW_WIDTH = 310; //Window width
private final int WINDOW_HEIGHT = 100; //Window height
public KiloConverter() {
setTitle("Kilometer Converter"); //Set the window title
setSize(WINDOW_WIDTH, WINDOW_HEIGHT); //Set the size of the window
//Specify what happens when the close button is clicked
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildPanel(); //Build panel and add to frame
add(panel); //Add panel to content pane
setVisible(true); //Display the window
}
private void buildPanel() {
messageLabel = new JLabel("Enter a distance in kilometers");
kiloTextField = new JTextField(10);
calcButton = new JButton("Calculate");
//ERROR - method addActionListener in class AbstractButton cannot be
//applied to given types
//reason: actual argument KiloConverter.CalcButtonListener cannot be
//converted to ActionListener by method invocation conversion.
calcButton.addActionListener(new CalcButtonListener());
panel = new JPanel();
panel.add(messageLabel);
panel.add(kiloTextField);
panel.add(calcButton);
}
private class CalcButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String input;
double miles;
input = kiloTextField.getText();
miles = Double.parseDouble(input) * 0.6214;
JOptionPane.showMessageDialog(null, input + "kilometers is " +
miles + " miles.");
}
}
public static void main(String[] args) {
new KiloConverter();
}
}
接口类:
import java.awt.event.ActionEvent;
public interface ActionListener {
public void actionPerformed(ActionEvent e);
}
答案 0 :(得分:1)
根据您的评论,您已创建了自己的interface
ActionListener
。
JButton
需要java.awt.ActionListener
的实例。
尝试删除您的实现并在您自己的侦听器中实现java.awt.ActionListener
。