Witam,
zabrałem się ostatnio za prosty komunikator (coś podobnego do irc), wykorzystując Sockety. Łącząc się z serwerem wysyłam mu dane i każdy zalogowany może zobaczyć wiadomość. Mam jednak problem z wyświetlaniem danych. Co mogę zrobić (wykorzystując JavaFX) aby w TextArea były wyświetlane wiadomości na bieżąco ?
public class MainChatPane implements Initializable {
static Socket socket;
static DataOutputStream dos;
static BufferedReader in ;
@FXML
private MenuItem menuDisconnect;
@FXML
private Button ButtonSend;
@FXML
private TextArea TAchat;
@FXML
private TextField TFmess;
@FXML
private Label SocketInfo;
@Override
public void initialize(URL location, ResourceBundle resources) {
OpenConnection();
TAchat.setDisable(true);
if(TFmess != null){
ButtonSend.addEventHandler(ActionEvent.ACTION, new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
String linia = TFmess.getText().toString();
try {
dos.writeUTF(MainWinController.nickname + " : " + linia);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
TFmess.setText(null);
}
});
}
}
public void OpenConnection(){
try{
socket = new Socket(MainWinController.host, Integer.parseInt(MainWinController.port));
SocketInfo.setText("Connected to: " + MainWinController.host +":"+MainWinController.port);
dos = new DataOutputStream(socket.getOutputStream());
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
}catch(IOException e){
}
}
}
w powyższym kodzie mam tylko opcję wysyłania wiadomości do serwera. Co zrobić żeby na bieżąco pobierało ?
Próbowałem z wątkami, ale procesor strasznie jest wtedy obciążony.