【问题标题】:java Sockets and Threads Problemjava套接字和线程问题
【发布时间】:2010-06-05 17:35:00
【问题描述】:

我正在用 Java 做一些套接字编程的东西.. 在这里我创建了一个按钮(创建服务器)..当我点击它时,它会启动服务器......但我想在启动服务器后将按钮名称更改为(停止服务器)...... 所以我做了这个.. 但是当我按下启动服务器时,它会启动并且按钮名称保持不变......

当客户端连接到它时,它会更改名称以停止服务器...

告诉我这段代码有什么问题??

这是我的一段代码...

public void actionPerformed(ActionEvent ex)
{
    if(ex.getActionCommand() == "CreateServer")
    {
        bt1.setText("Stop Server");
        bt2.setEnabled(false);
        b5.setText("Server Started On Port " + tf2.getText());      
        System.out.println("Server started 1");
            create(Integer.parseInt(tf2.getText()));  //my func. to create server
        System.out.println("Server started 2");
    }       
}

还有我的 create() 函数。包含一些套接字和线程...所以告诉我是什么问题...

【问题讨论】:

    标签: java sockets button multithreading


    【解决方案1】:

    您可能正在您的 AWT 线程中运行您的服务器。因此,这意味着该线程无法重新绘制您的框架并且按钮标题不会更改。

    因此为您的服务器创建一个新线程(此代码在您的按钮操作侦听器中):

    Runnable serverRunnable = new Runnable()
    {
        public void run()
        {
            create(Integer.parseInt(tf2.getText()));  //my func. to create server
        }
    };
    Thread serverThread = new Thread(serverRunnable);
    serverThread.start();
    

    执行此代码后,AWT 线程启动了一个新线程,不必自己运行服务器,可以继续重新绘制所需的框架或组件。

    【讨论】:

    • thanx ...它有效...告诉我你是如何在一个函数中创建线程的。它自己...每次我创建线程时,我都会创建一个由 runnable 实现的新类...这到底是做什么的“Runnable serverRunnable = new Runnable()”
    • @vs4vijay:也一样。在新类中实现它或这样做。如果你添加一个动作监听器也是一样的:你不是在创建一个新文件,就像这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多