質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

1102閲覧

javaでチャットアプリ クライアントのソースエラー

material18

総合スコア7

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/08/12 09:14

チャットアプリのクライアントを作っています。
このソースのService<Boolean> service = new Service<>() {
というところでエラーが出てしまいました。
改善方法を教えてください。

package client;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Client extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) throws Exception {
final String HOST = "localhost";
final int PORT = 1963;
Socket socket = new Socket(HOST, PORT);
InputStreamReader reader = new InputStreamReader(socket.getInputStream());
OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());

BorderPane rootPane = new BorderPane();
TextArea messageArea = new TextArea();
TextField inputField = new TextField();

Button sendButton = new Button("送信");
writer.write("name2" + "^");
writer.flush();

sendButton.setOnAction(
new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String inputMessage = inputField.getText();
try {
writer.write(inputMessage + "^");
writer.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
inputField.setText("");
inputField.requestFocus();
}
});
BorderPane inputPane = new BorderPane();
inputPane.setRight(sendButton);
inputPane.setCenter(inputField);
rootPane.setBottom(inputPane);
rootPane.setCenter(messageArea);

Scene scene = new Scene(rootPane, 680, 480);
scene.setFill(Color.BROWN);
stage.setTitle("Chat");
stage.setScene(scene);

Service<Boolean> service = new Service<>() {

@Override
protected Task<Boolean> createTask() {
Task<Boolean> task = new Task<>() {

@Override
protected Boolean call() throws Exception {
while(true) {
StringBuilder builder = new StringBuilder();
try {
for(int c = reader.read(); (char)c != '^'; c = reader.read()) {
builder.append((char)c);
}
} catch (IOException e) {
e.printStackTrace();
break;
}
Platform.runLater(() -> {
messageArea.appendText(builder.toString() + "\r\n");
});
}
return true;
}
};
return task;
}
};

service.start();

stage.show();

}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2018/08/12 10:19

ひとつ前の質問でも指摘を受けていますが・・・質問のしかたとして「エラーがおきます」はNGだと思ってください。コンパイルエラーなのか実行時エラーなのか、JDKのバージョン、エラーメッセージがどう表示されたのかなどを明記すべきです。そうしないと無用な混乱を招きかねません。例えば同じソースコードでもJDKのバージョンが違うとコンパイルエラーが起きたり起きなかったりといったこともあるのです。技術的なQ&Aでは自分の環境や現象を可能な限り詳細に(明確に)書くことがとても大事であること、指摘を受けたらそれに対してきちんと対応することを心がけてください。指摘にきちんと対応ししかるべき質問のしかたをすれば回答はつきやすくなります。逆にそれをしないと回答してもらえなくなっていきます。
Orlofsky

2018/08/12 13:07

コードは https://tratail.com/help#about-markdown の[コードを入力]を使ってください。何度も同じことを指摘されても理解できないようなら、職業として適性がないのかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問