[英]Error on basic Java program - cannot find symbol ActionListener()
我拼凑了以下HelloWorld
类型的程序,该程序打开一个窗口,显示一个按钮,然后通过关闭窗口来处理按钮单击。 我在添加ActionListener
来处理click事件的部分进行编译时遇到错误。 看看网上的其他示例和教程,这似乎应该可以工作。 有任何想法吗?
import java.util.*;
import javax.swing.*;
import java.awt.*;
public class MyTest{
public static void main(String args[]) throws Exception {
JFrame guiFrame = new JFrame("Test Frame");
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("Example GUI");
guiFrame.setSize(300,250);
guiFrame.setLocationRelativeTo(null);
JButton btn = new JButton("Hit Me");
btn.addActionListener( new ActionListener(){
@Override
public void actionPerformed(ActionEvent event)
{
guiFrame.close();
}
});
guiFrame.add(btn, BorderLayout.SOUTH);
guiFrame.setVisible(true);
}
}
错误:
javac MyTest.java
MyTest.java:17: error: cannot find symbol
btn.addActionListener( new actionListener(){
^
symbol: class actionListener
location: class MyTest
1 error
ActionListener
在java.awt.event
包中。 如果您导入该程序包,它将正常工作。
import java.awt.*;
语句不会导入ActionListener
类所在的java.awt.event
包。 要导入,您将需要单独“导入java.awt.event。*;”。
看看这里的更多详细信息,根据“软件包的表观层次”。
以下代码正在工作,这是我所做的:
import java.awt.event.*;
import java.util.*;
guiFrame.close()
替换了guiFrame.dispose();
因为没有Frame.close()
方法。 这是工作代码。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyTest {
public static void main(String args[]) throws Exception {
JFrame guiFrame = new JFrame("Test Frame");
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("Example GUI");
guiFrame.setSize(300, 250);
guiFrame.setLocationRelativeTo(null);
JButton btn = new JButton("Hit Me");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
guiFrame.dispose();
}
});
guiFrame.add(btn, BorderLayout.SOUTH);
guiFrame.setVisible(true);
}
}
没有包的层次结构。
java.awt.event
不是一个子包java.awt
。 因此import java.awt.*
不会导入的类java.awt.event
。
最初,程序包看起来是分层的,但不是。 例如,Java API包括java.awt包,java.awt.color包,java.awt.font包以及许多其他以java.awt开头的包。 但是,java.awt.color程序包,java.awt.font程序包和其他java.awt.xxxx程序包未包含在java.awt程序包中。 前缀java.awt(Java抽象窗口工具包)用于许多相关的程序包,以使关系显而易见,但不显示包含关系。
导入java.awt。*会导入java.awt包中的所有类型,但不会导入java.awt.color,java.awt.font或任何其他java.awt.xxxx包。 如果计划使用java.awt.color中的类和其他类型以及java.awt中的类和其他类型,则必须导入两个包及其所有文件:
import java.awt.*;
import java.awt.color.*;`
( 来源 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.