-2

这段代码的问题是,每当我运行它时,它都会显示编译错误:

找不到符号:构造函数 mywindowadapter(frame1)

位置:class mywindowadapter

mywindowadapter mwa=新的 mywindowadapter()"

import java.awt.*;
import java.awt.event.*;
/*<applet code=frame2 width=500 height=500>
</applet>*/
class frame2 extends Frame
{
    frame2(String title)
    {
        super(title);
        mywindowadapter mwa=new mywindowadapter();
        addWindowListener(mwa);     
    }
    public static void main(String ar[])
    {
        frame2 f=new frame2("my frame");
        f.setVisible(true);
        f.setSize(200,100);
    
     }
    public void paint(Graphics g)
    {
        g.drawString("hello frame",60,70);
    }
}
class mywindowadapter extends WindowAdapter
{

    mywindowadapter()
    {
        frame2 f=new frame2();  
    }
    public void windowClosing(WindowEvent we)
    {
        f.setVisible(false);
        System.exit(0);
    }
} 

下面的代码是上面代码的修正版。我无法理解前面代码中生成的错误。请帮忙!!

import java.awt.*;
import java.awt.event.*;
/*<applet code=frame2 width=500 height=500>
</applet>*/
class frame2 extends Frame
 {
    frame2(String title)
    {
        super(title);
        mywindowadapter mwa=new mywindowadapter(this);
        addWindowListener(mwa);     
    }
    public static void main(String ar[])
    {
        frame2 f=new frame2("my frame");
        f.setVisible(true);
        f.setSize(200,100);
    
    }
   public void paint(Graphics g)
    {
        g.drawString("hello frame",60,70);
    }
}
class mywindowadapter extends WindowAdapter
{
    frame2 f;
    mywindowadapter(frame2 f)
    {
        this.f=f;   
    }
    public void windowClosing(WindowEvent we)
    {
        f.setVisible(false);
        System.exit(0);
    }
}   
4

2 回答 2

0

frame2 没有默认构造函数,您正在尝试在适配器中使用它。

要么为 frame2 提供默认构造函数,要么将适当的参数传递给现有的构造函数。

第一个代码肯定有很多编译错误,请修复它们。就像在 windowClosing() 中一样,您不能引用 f。

于 2013-03-23T07:49:20.673 回答
0

对我来说,看起来你有两个版本的mywindowadapter类,一个带有带参数的构造函数,另一个带有不带参数的构造函数。两者都在同一个包中。因此,当编译mywindowadapter没有参数的构造函数时,会覆盖另一个。

此外,具有参数的构造函数的类可能不在您调用其构造函数的包中。

检查它是否属于这些情况之一。

于 2013-03-23T08:04:15.833 回答