6

我为虚拟键盘实现了一个示例类并运行了这个 VirtualKeyboardTest。出现了键盘,但主要问题是单击 x 按钮时它没有正确关闭。我该如何解决这个问题?

import java.awt.*;
import java.awt.event.*;

public class VirtualKeyboardTest
{
    public static void main(String args[])
    {
        VirtualKeyboard vk = new VirtualKeyboard();
        vk.setSize(500,300);
        vk.setVisible(true);
        Frame f1 = new Frame();
        f1.addWindowListener( new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {

                System.exit(0);
            }
        } );
    }
}
4

3 回答 3

5

你的代码不正确。代替

f1.addWindowListener( new WindowAdapter() {
  ...

尝试

vk.addWindowListener( new WindowAdapter() {
  ...

这将关闭您的窗口。

于 2012-10-05T11:13:50.737 回答
3

最好使用方法public void dispose()

vk.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
            vk.dispose(); // use dispose method 
         }
     }
);

AWT是重量级的,即它的组件使用系统的资源

窗口是非阻塞的。这意味着一旦您在代码中创建了一个,您的代码就会继续执行。

这意味着您的 Window 在创建后可能会立即超出范围,除非您在其他地方明确存储了对它的引用。此时窗口仍在屏幕上。

这也意味着当你完成它时,你需要一些其他的方法来摆脱它。输入Window dispose() 方法,该方法可以从 Window 的侦听器之一中调用。

于 2016-03-04T08:44:36.253 回答
-1

检查这个:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

它基本上告诉 Windows 管理器在按下“X”时关闭您的应用程序。

于 2012-10-05T11:10:00.287 回答