-1

Java でチャット プログラムを作成しようとしていますが、サーバー フォームを実行すると、描画に使用したコンポーネントが表示されないという問題が発生しました。

これは、フォームの実行で使用したコードです。

public void run() {

                Server s = new Server();
                s.setVisible(true);

                // Etablir la connexion
                try
        {
            ServerSocket ecoute;
            ecoute = new ServerSocket(1111);
            Socket service = null;
            System.out.println("Serveur en attente d'un client !");
            while(true)
            {

                service = ecoute.accept();
                System.out.println("Client connécté !");
                DataInputStream is = new DataInputStream(service.getInputStream());
                                s.jTextArea1.setText("Client dit : " + is.readUTF().toUpperCase());
                service.close();
            }
        }
        catch(IOException e)
        {
            e.printStackTrace();

        }
            }
4

1 に答える 1

1

このコードを実行しても何も起こらないと言いました。メソッドの存在は、public void run()これがスレッド、または少なくともRunnable.

のため、while(true)このスレッドが適切な方法で開始されないと、独立して実行されません。つまり、プログラム全体を保持します。

を呼び出す代わりにthread.run();、を呼び出しますthread.start();。これにより、メインスレッドと並行して実行される新しいスレッドを開始した後、run メソッドが呼び出されます。

このコードがスレッド内になく、public void run()たまたま使用した場合でも、同じ問題が発生します。

詳細については、スレッドに関するドキュメントを参照してください。

于 2013-03-03T16:13:45.370 に答える