【问题标题】:How to close the window in AWT?如何在 AWT 中关闭窗口?
【发布时间】:2011-03-12 07:26:08
【问题描述】:

我正在使用 AWT 创建一个小型应用程序。当我尝试关闭窗口时,“关闭”按钮不起作用。

这是我的代码:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;

class ButtonDemo1 implements ActionListener {
    Button b1;
    TextField tf;
    Frame f;

    ButtonDemo1(String s) {
        f = new Frame(s);
        b1 = new Button("OK");

        tf = new TextField(10);
        f.setSize(200, 250);
        f.setVisible(true);
        b1.addActionListener(this);

        f.add(tf);
        f.add(b1);

        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });

        f.setLayout(new FlowLayout());
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == b1) {
            tf.setText("Press Ok");
        }

    }

    public static void main(String args[]) {
        new ButtonDemo1("First");
    }
}

如何修复“关闭”按钮?

【问题讨论】:

  • 试着把 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);在你的程序中。
  • @Umesh,请将您的评论作为答案,以便我们为您投票。毕竟这是正确的答案。
  • @krock:是吗?即使他没有使用 JFrame,因此该方法对他的框架不可用?
  • @user:您的代码对我来说很好用。单击关闭窗口图标将终止程序。如果有问题,我怀疑它不在您共享的代码中。
  • 原源为什么要导入java.applet类? System.exit(n) 不能在 applet 中调用,也不能在 applet 启动的任何框架中调用。

标签: java awt


【解决方案1】:

最好使用public void dispose()的方法

Why should you have to dispose() a java.awt.Window that goes out of scope?

f.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
            dispose();
         }
     }
);

【讨论】:

  • 应该是f.dispose() 而不仅仅是dispose()
【解决方案2】:

你可以这样做:

f.addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent we){
    System.exit(0);
  }
});

【讨论】:

  • 虽然这实际上是他标题的答案,但他的问题正文中已经包含此代码。我相信他的 System.exit(0) 没有按预期行事(可能是我遇到的同样问题,正在寻找答案)。
【解决方案3】:

尝试这样做:

class ExampleClass implements ActionListener, WindowListener
{

...

f.addWindowListener(this);

...

public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}

public void windowClosing(WindowEvent e) 
{
    System.exit(0);
}

}

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2012-09-26
    • 2011-10-27
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多