gpt4 book ai didi

使用某些输入法时Java Frame无法关闭

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:34 24 4
gpt4 key购买 nike

下面是2个简单的java ui应用程序,我发现如果当前输入法是谷歌拼音,当我在Windows 7和Windows XP操作系统中单击此框架的右上关闭按钮时,框架可以关闭,但EDT 线程不会终止

谷歌拼音输入法下载地址为http://dl.google.com/pinyin/v2/GooglePinyinInstaller.exe .

最近我发现使用百度拼音输入法(另一种中文输入法)时也会出现这种情况。不同的是,只有使用swing时才会出现,随机(EDT线程一段时间内不能终止,稍后恢复正常)

我很早之前就看过一篇文章,指责和我类似的问题,而且作者也没有提出解决方案。我认为这是 Google IME 中的一个错误。

我知道大多数人认为这个问题可能不是中文,可能无法安装这两个输入法并尝试我的示例,但这对我来说太荒谬了,这两件事怎么会有关系???有人根据您的知识有一些想法来解释它吗?我将非常感激!

    // AWT  
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
final Frame frame = new Frame("test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
frame.dispose();
}
});
frame.setSize(400, 400);
frame.setVisible(true);
}
});

下面是 Swing

    // Swing
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("swing");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
});

正如@MadProgrammer 提到的。我更改了代码,在AWT中使用System.exit(0),在swing中使用frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),结果是当我单击关闭按钮时我无法关闭框架 ,什么也没发生。

最佳答案

您应该尝试使用退出监听器,例如:

this.addWindowListener(new MyExitListener());

以及退出监听器类:

public class MyExitListener extends WindowAdapter {

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

这是我通常做的事情,而且总是有效。

关于使用某些输入法时Java Frame无法关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com