java中有没有有象vb中的doEvents的方法,既我想先得到"服务正在启动...",然后当ftpServer = new TServer();运行完后再得到"服务已启动";ftpServer对象是一个死循环
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.XYLayout;
import com.borland.jbcl.layout.XYConstraints;
import com.borland.jbcl.layout.*;
import java.awt.Container;
import java.awt.event.*;
import java.io.*;
public class ServerWindow extends JFrame
{
  XYLayout layout=new XYLayout();
  Container c;
  JButton beginServer=new JButton("启动服务");
  JButton stopServer=new JButton("停止服务");
  JButton exit=new JButton("退出");
  JTextArea textArea=new JTextArea();
  JScrollPane scroll=new JScrollPane();
  JLabel command=new JLabel("命令行");
  JTextField commandContent = new JTextField();
  JButton send=new JButton("发送");
  String com;
  String str="";
  TServer ftpServer =null;
  FtpConsole ftpconsole = null;
  public ServerWindow()
  {
    super("服务端");
    c=getContentPane();
    c.setLayout(layout);
    c.add(beginServer,new XYConstraints(15, 14, 98, 30));
    c.add(stopServer,new XYConstraints(130, 14, 98, 30));
    c.add(exit,new XYConstraints(515, 14, 60, 30));
    c.add(scroll, new XYConstraints(15, 55, 560, 330));
    scroll.getViewport().add(textArea,null);
    c.add(command, new XYConstraints(15, 400, 40, 30));
    c.add(commandContent, new XYConstraints(58, 400, 450, 30));
    c.add(send, new XYConstraints(515, 400, 60, 30));
    beginServer.setEnabled(true);
    stopServer.setEnabled(true);
    send.setEnabled(false);
    setSize(600,480);
    setVisible(true);
    beginServer.addActionListener(new ButtonListener());
    exit.addActionListener(new ButtonListener());
    stopServer.addActionListener(new ButtonListener());
  }
class ButtonListener implements ActionListener
{
  
  public void actionPerformed(ActionEvent e)
  {
    com=e.getActionCommand();
    if(com.equals("启动服务"))
    {
      str="服务正在启动...";
      textArea.append(str+"\n");
  ftpServer = new TServer();//启动ftp服务端,主要是这里的问题,谢谢大家帮个忙,解决立即给50分
  str="服务已启动";
      textArea.append(str+"\n");
}
    if(com.equals("停止服务"))
    {
      ftpconsole = new FtpConsole();
     ftpconsole.start();
     ftpconsole.consoleQUIT();
    }
    if(com.equals("退出"))
    {
      new WindowClose().windowCloseApp();
    }
  }
}  public static void main(String args[])
  {
    System.setProperty("swing.plaf.metal.controlFont", "宋体");
    ServerWindow app = new ServerWindow();
  }}

解决方案 »

  1.   

    用多线程,在启动ftpServer = new TServer();时候,启动一个线程,显示"服务正在启动...",当ftpServer = new TServer();运行完后,把该线程显示为"服务已启动";
      

  2.   

    to: chinatelly 
    先谢谢你,
    还是有问题,当我在那里加上如下代码时
     if(com.equals("启动服务"))
     {
          str="服务正在启动...";
          textArea.append(str+"\n");
          new Thread
         (
          new Runnable()
         {
             ftpServer = new TServer();
       
         //启动ftp服务端,主要是这里的问题,还是运行到这里截面不能操作了,也就是不能向下运行,呵呵,除了多线程之外还有什么方法,或者是我运的多线程不对(服务端有一个.accept()的死循环)
          }
         ).start;
      
      str="服务已启动";
          textArea.append(str+"\n");
    }
    我加的代码有什么错误吗,麻烦帮我指出.
      

  3.   

    new Thread(new Runnable() {
                public void run() {
                     ftpServer = new TServer();
                }
            }
            ).start();