我已经有了这个项目,但我遇到了更多问题。 SetMusicDialog的对话框打开,但当我尝试退出时它不会关闭。我有一个System.exit,但我不确定为什么窗口不会关闭。
import java.awt.*;
import java.io.*;
public class SetMusicDialog extends Dialog
{
public static String sng;
public SetMusicDialog()
{
super ((Dialog)null, "Set Music");
Panel mpanel;
Font l = new Font("Helvetica", Font.ITALIC, 12);
setFont(l);//sets font
setBackground(Color.cyan);
Panel f = new Panel();
f.add("West", new Button("Death Grips"));
f.add("East", new Button("Siren"));
add("South",f);
pack(); // make it just fit
resize(preferredSize());
move(200,200);
}
public boolean handleEvent1 (Event evt)
{
switch (evt.id)
{
case Event.WINDOW_DESTROY:
System.exit(0);
dispose();
return true;
case Event.ACTION_EVENT:
if("Death Grips".equals(evt.arg))
{
sng= "breakmirrors.wav";
}
else if("Siren".equals(evt.arg))
{
sng= "bip.wav";
}
dispose();
}
return false;
}
}
答案 0 :(得分:0)
您可以添加:
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
windowClosed
无法检测用户是否尝试关闭窗口。它只会在窗口关闭时运行。因此,请使用windowClosing
。
此外,使用WindowAdapter
您 需要编写WindowListener
的所有方法。
我在你的构造函数中添加了这段代码,它运行正常。
答案 1 :(得分:-1)
如果你正在使用AWT,你应该像MadProgrammer所说的那样创建一个WindowListener
。基本上,WindowListener是一个类,它具有在发生某些与窗口相关的操作时运行的方法。编写将在Dialog
(扩展Window
)关闭时运行的代码:
//d is a dialog
d.addWindowListener(new WindowListener() {
//You'll need to implement all the abstract methods. leave them empty.
@Override
public void windowClosed(WindowEvent e) {
//Your code
}
});
基本上,您是匿名实现抽象类WindowEvent
。确保您也实现了所有其他方法,否则您将遇到编译器错误。您的IDE应该自动实现所有方法。