Java 当尝试向事件处理程序注册Swing按钮时,为什么会出现错误?

Java 当尝试向事件处理程序注册Swing按钮时,为什么会出现错误?,java,swing,Java,Swing,我正在尝试创建一个简单的JavaSwing应用程序,它允许我简单地将公里转换为英里。将按钮注册到事件处理程序时,我得到一个错误。该错误位于textField标识符中。下面突出显示了一条红色的曲线,我不知道为什么这是一个错误。这是代码。非常感谢 import javax.swing.*; import java.awt.event.*; public class Graphics { public static void main(String[] args) {

我正在尝试创建一个简单的JavaSwing应用程序,它允许我简单地将公里转换为英里。将按钮注册到事件处理程序时,我得到一个错误。该错误位于textField标识符中。下面突出显示了一条红色的曲线,我不知道为什么这是一个错误。这是代码。非常感谢

import javax.swing.*;
import java.awt.event.*;

public class Graphics
    {
    public static void main(String[] args)
        {
    // Create a window
    JFrame window = new JFrame();
    window.setTitle("Distance Converter");
    window.setSize(550, 450);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setVisible(true);

    // Create a panel
    JPanel panel = new JPanel();

    // Create components
    JLabel message = new JLabel("Enter distance in kilometers");
    JTextField textField = new JTextField(10);
    JButton button = new JButton("Calculate");

    // Add the components to the panel
    panel.add(message);
    panel.add(textField);
    panel.add(button);

    // Add the panel to the window
    window.add(panel);
}

// Add action listener to button
MyButtonListener listener = new MyButtonListener();
button.@addActionListener(listener);


// Register an event listener to the calculate button
private class MyButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        final double converstion = 0.6214;
        String input; // To hold the user's input
        double miles; // To hold the number of miles

        // Get the text entered by the user into the text field
        input = textField.getText();
        // textField is underlined with red: There is an error here.
        // I do not understand why there is an error here.

        // Convert the input to miles
        miles = Double.parseDouble(input) * converstion;

        // Display the result.

        JOptionPane.showMessageDialog(null, input + " kilometers is " + miles + " miles.");

    }
}
}

不能在方法或静态初始化器之外编写语句(方法调用、变量赋值等)。调用
按钮.addListener()
应该在一个方法内完成,比如main方法

public static void main(String[] args) {
    ...
    // Add action listener to button
    MyButtonListener listener = new MyButtonListener();
    button.addActionListener(listener);
    ...
}

另外,在方法调用中,
@
符号不应出现在方法名称之前。以后,您应该发布收到的错误并阅读它,因为它将为您提供问题所在的线索。

按钮。@addActionListener
??为什么要使用
@
?这不是Java,曲线应该会提示您更仔细地查看这行代码。此外,您可能试图调用构造函数或方法之外的方法,如果您没有声明和分配变量,则不允许出现某些情况。感谢您的反馈,但我仍然不理解为什么textField带红色下划线。@请提供更多信息,例如错误所在的行以及您发布的代码中的位置。