抛出异常后的空白消息对话框

时间:2013-08-15 09:36:51

标签: java swing exception-handling joptionpane event-dispatch-thread

我正在学习Java,我试图创建一个简单的客户端 - 服务器应用程序。我的服务器有GUI,还有一个启动服务器的按钮。点击后,另一个线程启动。我将其称为主服务器线程,因为它处理连接和handels客户端。我也有按钮来关闭服务器但不是整个应用程序。我关闭ServerSocket来中断这个线程,所以我可以停止服务器。我想要消息对话框弹出inf finally块来通知我服务器停止运行。 以下是服务器运行方法的简化和修改代码:

public void run(){
    try{
      JOptionPane.showMessageDialog(null,"begining");      
      ss = new ServerSocket(TCP_PORT);

    while(cont){

       Socket sock = ss.accept();
       exec.execute(new ServerThread(sock));

    }catch(SocketException soex){
      //JOptionPane.showMessageDialog(null,"SocketException");
    }finally{
      JOptionPane.showMessageDialog(null,"finally");
    }
    //JOptionPane.showMessageDialog(null,"after finally");
  }

第一个消息对话框显示正确,但是当由于异常而弹出其他3个对话框时,我只会看到带有标题和窗口边框的灰色消息对话框,但没有消息或任何按钮。我无法关闭它,我无法关闭我的申请。它停留在那里。

我正在使用Ubuntu,并使用open-jdk javac版本“1.7.0_25”进行编译,并使用相同版本的java运行它。我也尝试过1.6版本,还有Oracle 1.7.0_25(java和javac)。每次我得到相同的结果。

这里有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:3)