teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

問題点の減少 ソースコードの変更

2015/12/31 00:46

投稿

kt3302y
kt3302y

スコア27

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,9 @@
1
1
  javaでチャットアプリを作ろうと思い,CUIでチャットサーバーをjavaFXを使用してチャットクライアントを作成しました.チャットサーバーの方はメッセージを受信,送信を送るものをスレッドで表現しています.GUIの方のソースコードではconnectボタンをクリックするとソケットの接続とメッセージの受信を行い,中央のテキストエリアにサーバーから送られたメッセージを表示するスレッドと送信ボタンをクリックするとテキストフィールドに入力されている文字をサーバーに送信するスレッドを作成してそれらをイベント発生時に開始するようなものを作成しました.
2
+ しかし,問題が二つ発生してしまいました
3
+ - サーバーに送信できない
4
+ - sendボタンをクリックしてしまうとテキストフィールドに文字が入力できなくなる
2
- しかし,メッセージを送信してもサーバーに届いていないというかられない問題と一回,送してしまうと入力ができなくなる問題が発生しまし.何いけないかわからないの教えてください.
5
+ このうちのサーバーに送信る問題は解決できのです問題が解決きません
6
+ 原因がわからないので教えてください
3
7
  ```チャットサーバー
4
8
  import java.io.IOException;
5
9
  import java.net.ServerSocket;
@@ -179,7 +183,7 @@
179
183
  }
180
184
  @FXML protected synchronized void handleButtonSendMessageAction(ActionEvent event) {
181
185
 
182
- taskSendMessage = new NetSendMessageTask(socket);
186
+ taskSendMessage = new NetSendMessageTask(socket,sendMessage.getText());
183
187
  sendMessage.textProperty().bind(taskSendMessage.messageProperty());
184
188
 
185
189
  Thread thread = new Thread(taskSendMessage);
@@ -234,16 +238,21 @@
234
238
  import java.io.*;
235
239
  import java.net.Socket;
236
240
 
241
+ import javafx.beans.property.SimpleStringProperty;
242
+ import javafx.beans.property.StringProperty;
237
243
  import javafx.concurrent.Task;
238
244
 
239
245
  public class NetSendMessageTask extends Task<Void>{
240
246
  private Socket socket;
247
+ private StringProperty message = new SimpleStringProperty();
241
248
 
242
249
 
243
- protected NetSendMessageTask(Socket socket){
250
+ protected NetSendMessageTask(Socket socket,String message){
244
251
  this.socket = socket;
252
+ this.message.set(message);
245
253
  }
246
-
254
+
255
+
247
256
  @Override
248
257
  protected Void call() throws Exception {
249
258
 
@@ -256,8 +265,8 @@
256
265
  break;
257
266
  }
258
267
  // データの送信
259
- String message = getMessage();
268
+
260
- dos.writeUTF(message);
269
+ dos.writeUTF(message.toString());
261
270
  updateMessage("");
262
271
 
263
272
 
@@ -266,6 +275,7 @@
266
275
  }
267
276
  }
268
277
 
278
+
269
279
  ```
270
280
  ```GUIレイアウト
271
281
  <?xml version="1.0" encoding="UTF-8"?>