如何在java中关闭此窗口?

时间:2016-01-20 22:07:21

标签: java window awt

我已经有了这个项目,但我遇到了更多问题。 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;
  }
}

2 个答案:

答案 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应该自动实现所有方法。