Java Fx не работает должным образом при использовании цикла сокета - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть некоторые проблемы с java fx, я разрабатываю Service Mail, и у меня есть проблема с отображением стадии сервера (с java fx).Используя шаблон MVC, я создал: 1) MainServer.java (где я запускаю приложение java fx) 2) ControllerServer.java (класс контроллера) 3) ServerLog.java (класс модели, не важный для моего вопроса, но должен был упомянутьэто).

Теперь у меня есть другой класс с именем Server.java, где есть реальный код сервера, я попытался объединить MainServer.java с Server.java, переместив код Server.java в ControllerServer.java, сервер.работает хорошо, но этап не показывает этап, я думаю, что проблема в цикле while внутри инициализируемого.


public class Server {
    private static Object lock = new Object();
    private static ServerLog serverLog = new ServerLog();

    public static void getService(Socket s) throws IOException {
         // not important for my question so deleted
    }

    public static void main(String[] args){
        new File("users").mkdir();
        try {
            ServerSocket socket = new ServerSocket(8189);

                while(true) {
                    Socket s = socket.accept();
                    getService(s);
                }

        }catch(IOException e){e.printStackTrace();}

    }
}
public class ServerMain extends Application {


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

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("View/server.fxml"));
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.setTitle("Server Log");
        primaryStage.show();
    }
}

public class ControllerServer implements Initializable {

    @FXML
    private ListView myListView;


    //protected List<String> listLog = new ArrayList<>();
    protected ListProperty<String> listProperty = new SimpleListProperty<>();
    private ServerLog serverLog = new ServerLog();

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        try {
            serverLog.fillLogList();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (serverLog.logList!= null) {
            for (int i = 0; i < serverLog.logList.size(); i++) {
                System.out.println(serverLog.logList.get(i));
            }
            ObservableList<String> seasonList = FXCollections.observableArrayList(serverLog.logList);
            myListView.setItems(seasonList);
        }

    }
}

что я хочу сделать, это удалить ServerMain.java иперенести то, что ServerMain.java делал на сервер (поэтому сервер должен показывать сцену при открытии)

1 Ответ

0 голосов
/ 18 апреля 2019

пришлось отредактировать мой ответ, потому что в конце он работал, но не правильно, с этим классом теперь я могу правильно видеть этап java fx, но сервер перестал работать правильно, поэтому, если у кого-то есть лучшее решение, я был бы рад прочитать эторешение :(.

public class Server extends Application {
    private static Object lock = new Object();
    private static ServerLog serverLog = new ServerLog();

    public static void getService(Socket s) throws IOException { ... }

    public static void main(String[] args){
        launch(args);
        new File("users").mkdir();
        try {
            ServerSocket socket = new ServerSocket(8189);

                while(true) {
                    Socket s = socket.accept();
                    getService(s);
                }

        }catch(IOException e){e.printStackTrace();}

    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("View/server.fxml"));
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.setTitle("Server Log");
        primaryStage.show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...