Ошибка при обновлении списка клиентов в пользовательском интерфейсе сервера FXMLJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка при обновлении списка клиентов в пользовательском интерфейсе сервера FXML

Сообщение Anonymous »

Я работаю над простым клиент-серверным проектом. Его функция не имеет особого значения, потому что у меня проблема со списком клиентов в пользовательском интерфейсе моего сервера. Он использует FXML и имеет listView для отображения IP-адресов клиентов, но не обновляется при запуске нового клиента. Я попробовал несколько методов, чтобы приблизиться к этому, но мне бы хотелось получить помощь. Коды я дал ниже. Если того, что я предоставил, недостаточно, дайте мне знать, и я обновлю этот пост.
enter code herepackage chattingnetwork;

import javafx.application.Platform;
import javafx.scene.control.ListView;

import java.io.*;
import java.net.*;
import java.util.Date;

public class Server {

private static ListView clientListView;

public static void startServer() {
try {
ServerSocket serverSocket = new ServerSocket(8000);
System.out.println("Server started at " + new Date() + '\n');

while (true) {
Socket socket = serverSocket.accept();
String clientIP = socket.getInetAddress().getHostAddress();

System.out.println("Client connected: " + clientIP);

Platform.runLater(() -> {
if (clientListView != null) {
clientListView.getItems().add(clientIP);
System.out.println("Added client to ListView: " + clientIP);
} else {
System.out.println("clientListView is not initialized");
}
});

new Thread(new ClientHandler(socket)).start();
}
} catch (IOException e) {
System.err.println("Error starting server: " + e.getMessage());
}
}

public static void setClientListView(ListView listView) {
clientListView = listView;
}
}

Это мой код на стороне сервера, и когда подключается новый клиент, он выводит на консоль сообщение о подключении нового клиента, но, как я уже упоминал, ListView в пользовательском интерфейсе не обновляется. Вот мой контроллер и коды FXML:
package chattingnetwork;

import javafx.fxml.FXML;
import javafx.scene.control.ListView;

public class serverFXMLController {

@FXML
private ListView clientListView;

@FXML
public void initialize() {
System.out.println("Server UI initialized.");
if (clientListView != null) {
System.out.println("clientListView is initialized.");
Server.setClientListView(clientListView);
} else {
System.out.println("clientListView is null.");
}
}
}

При подключении нового клиента «clientListView инициализируется». печатается в консоли. Вот FXML-файл пользовательского интерфейса сервера:










Подробнее здесь: https://stackoverflow.com/questions/792 ... er-ui-fxml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»