2011-08-16 9 views
4

私は既にソケットでサーバーに接続している間にパネルを作成しようとしていますが、javaではフレームは表示されますがフレームの内部は表示されません。パネルはソケットが閉じた後にのみ表示されますが、開いている間はパネルが必要です。これをどうすれば解決できますか?スレッドの問題や何かが欠けているためです... ありがとう...Javaソケットはパネルを防ぎますか?

+6

私はあなたには、いくつかのソケット操作の際に、ブロッキングとさわやかからGUIを防止しているからだと考えています。いくつかのコードを表示しますか? – cnicutar

+0

大きなプロジェクトであり、関数の例外です。私はJframeを作成し、それを表示しようとしました。私もこの関数の新しいスレッドを作成しようとしましたが、同じ状況です。 –

+0

は、JFrameを作成するコードが実際に呼び出されるかどうかを調べるためにprintステートメントを使用します。ソケットが閉じられた後に表示されるので、これはおそらくスレッディングの問題です。 –

答えて

5

EDTでは長時間実行されるタスクは発生しません。これには、I/O操作のブロックも含まれます。このようなタスクでSwingコンポーネントが変更されない場合は、単に別のスレッドを使用してください。それ以外の場合は、別のスレッドで長時間実行されるタスクを実行し、結果をアクションイベントとしてEDTに投稿してSwingコンポーネントを変更できるようにするユーティリティ(たとえばSwingWorkerおよびSwingUtilties)があります。

も参照してください:

+0

for 'invokeLater()' +1 – mKorbel

+0

説明をありがとう...私は明日それを試してみます。私はそれが動作することを願っ:) –

関連する問題