JButton错误无法应用于给定类型

时间:2013-05-16 09:00:14

标签: java swing jbutton actionlistener

我正在开发一个简单的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);
}

1 个答案:

答案 0 :(得分:1)

根据您的评论,您已创建了自己的interface ActionListener

JButton需要java.awt.ActionListener的实例。

尝试删除您的实现并在您自己的侦听器中实现java.awt.ActionListener