liang1long2qun3 2010-04-13 22:45
浏览 349
已采纳

JTextField类, 窗口关闭后,程序未退出

//在文本框快速输入文本后,将窗体关闭,程序并未结束(有时会退出).

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class Test extends JFrame {

public Test() {
buildContext();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(600, 400);
setLocationRelativeTo(null);
setVisible(true);
}

private void buildContext() {
JPanel panel = new JPanel();
JTextField textField = new JTextField(10);
textField.getDocument().addDocumentListener(
new DocumentListener() {

      @Override
      public void changedUpdate(DocumentEvent e) {
      }

      @Override
      public void insertUpdate(DocumentEvent e) {
        System.out.println("insert");
      }

      @Override
      public void removeUpdate(DocumentEvent e) {
      }
    });

panel.add(textField);
setContentPane(panel);

}

public static void main(String[] args) {
new Test();
}

}

  • 写回答

3条回答 默认 最新

  • 拽拽的初行者 2010-04-14 08:40
    关注

    [b][color=blue]我也遇到过,描述如下:

    不使用中文输入法,程序正常退出。如果使用中文输入法,程序不退出。即使使用中文输入法,输入英文。程序还是无法退出。[/color]

    按照API的描述:[/b]
    [quote]
    DISPOSE_ON_CLOSE

    static final int DISPOSE_ON_CLOSEThe dispose-window default window close operation.

    [b]Note: When the last displayable window within the Java virtual machine (VM) is disposed of, the VM may terminate. See AWT Threading Issues for more information.
    [/b]
    [/quote]
    [b]DISPOSE_ON_CLOSE , 如果程序的最后一个窗口,调用此方法时,会退出JVM。

    但是调试可以发现,程序执行完了,还是4个线程在运行:

    Thread[AWT-Shutdown]

    Deamon Thread[AWT-Windows]

    Thread [AWT-EventQueue-0]

    Thread[DestoryJavaVM][/b]
    [color=blue]
    换成EXIT_ON_CLOSE就可以了。一直不清楚为什么,但是可以肯定 [b]与中文输入法有关![/b][/color]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架