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

问题描述 投票:0回答:1

我正在使用简单的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);
}
java swing jbutton actionlistener
1个回答
1
投票

根据您的评论声音,您创建了自己的名为interfaceActionListener

[JButton需要一个java.awt.ActionListener的实例。

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

© www.soinside.com 2019 - 2024. All rights reserved.