чтение и запись файла в программе javafx - PullRequest
0 голосов
/ 12 ноября 2018

Я пишу программу, пишу и читаю файл. он имеет 50 номеров, и если пользователи вводят номер больше 50, он должен попросить пользователей ввести его снова. у меня вопрос об ошибке, он должен показать окно сообщения, но снова вернуться к текстовому полю для ввода. Также еще один вопрос, например, user1 вводит 1, а user2 также вводит 1, он должен сообщить пользователю2 «пожалуйста, введите другой номер, который уже введен». как я могу сделать это при записи и чтении файлов. это мой код:

public class JavaFXApplication24 extends Application {
    private int seatInput;
    @Override
    public void start(Stage primaryStage) {
         StackPane pane = new StackPane();

         HBox hbox = new HBox();
         Label num = new Label("Please enter the  number from 1 to 50: ");

        TextField numInput = new TextField();

        File file = new File("NumberBook.txt");
        Button ok = new Button("ok");
         ok.setOnAction((new EventHandler<ActionEvent>(){
        public void handle(final ActionEvent event ){

            try{
             if ((numInput.getText().equals(1)&& numInput.getText().equals(50))){


             }else{
                 String input = JOptionPane.showInputDialog("Please enter again");
             }
        }
            catch (HeadlessException | NumberFormatException e) {

        }
        try {
            PrintWriter output = new PrintWriter(file);

        } catch (IOException ex) {
            System.out.printf("error", ex);
        }
         try {
            Scanner input1 = new Scanner(file);

            System.out.printf("Entered: %s", seatInput);

        } catch (FileNotFoundException ex) {
            System.out.printf("error", ex);
        }

        }

        }));
        hbox.getChildren().addAll(num,numInput,ok);



        pane.getChildren().addAll(hbox);

        Scene secondScene = new Scene(pane, 600, 400);

        // New window (Stage)
        Stage newWindow = new Stage();
        newWindow.setTitle("Booking and Timing");
        newWindow.setScene(secondScene);
        newWindow.show();

    }

}

1 Ответ

0 голосов
/ 13 ноября 2018

На ваш взгляд, некоторые проблемы с вашим кодом:

1) if ((numInput.getText().equals(1)&& numInput.getText().equals(50))).Здесь есть 2 проблемы.Во-первых, как указал Фабиан, это утверждение всегда будет оцениваться как ложное.Во-вторых, из вашего вопроса я думаю, что вы хотите, чтобы пользователь ввел число от 1 до 50, но здесь вы проверяете, вводят ли они 1 и 50 (что также означает, что оно всегда ложно).

2) JOptionPane.showInputDialog("Please enter again") Поскольку ваше приложение JavaFX, вы должны использовать встроенный Dialog .

Теперь, чтобы ответить на ваши вопросы, вы можете вызвать requestFocus в текстовом поле сразу после отображения сообщения об ошибке.Ваш второй вопрос выглядит так, как будто вам нужна сетевая функциональность в приложении, что добавляет ему много сложности.Возможно, вам придется провести некоторое исследование о том, как сделать это в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...