Java 当尝试向事件处理程序注册Swing按钮时,为什么会出现错误?
我正在尝试创建一个简单的JavaSwing应用程序,它允许我简单地将公里转换为英里。将按钮注册到事件处理程序时,我得到一个错误。该错误位于textField标识符中。下面突出显示了一条红色的曲线,我不知道为什么这是一个错误。这是代码。非常感谢Java 当尝试向事件处理程序注册Swing按钮时,为什么会出现错误?,java,swing,Java,Swing,我正在尝试创建一个简单的JavaSwing应用程序,它允许我简单地将公里转换为英里。将按钮注册到事件处理程序时,我得到一个错误。该错误位于textField标识符中。下面突出显示了一条红色的曲线,我不知道为什么这是一个错误。这是代码。非常感谢 import javax.swing.*; import java.awt.event.*; public class Graphics { public static void main(String[] args) {
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带红色下划线。@请提供更多信息,例如错误所在的行以及您发布的代码中的位置。