Передача параметра в JavaFx

1

Я пытаюсь создать простой просмотрщик изображений с помощью JavaFx, который бы схож с этим:

Viewer viewer = new Viewer("path/to/file.jpg");

Я пробовал что-то в соответствии с приведенным ниже кодом, но он не работает.

public class Viewer extends Application {

private String filePath;

public Viewer(String filePath) {
    this.filePath = filePath;
}

@Override 
public void start(Stage stage) {
    // load the image
    Image image = new Image("file:" + this.filePath);

    // simple displays ImageView the image as is
    ImageView iv1 = new ImageView();
    iv1.setImage(image);

    Group root = new Group();
    Scene scene = new Scene(root);
    HBox box = new HBox();
    box.getChildren().add(iv1);
    root.getChildren().add(box);

    stage.setTitle(this.filePath);
    stage.setWidth(415);
    stage.setHeight(200);
    stage.setScene(scene); 
    stage.sizeToScene(); 
    stage.show(); 
}
}

Существует ли стандартный способ передачи параметров в приложение JavaFx?

Теги:
javafx

2 ответа

1
Лучший ответ

Если я понимаю ваш вопрос, у вас есть один или несколько параметров для вашего субкласса приложения. У абстрактного приложения класса есть метод, называемый запуском, который получает аргументы String []. Затем вы можете передать параметр для этого, например. String[]{"--nameOfParameters=value of patameters",...}. Вы получаете параметры для getParameters().getNamed().get("name of parameters").

Ниже я приведу пример.

public class Viewer extends Application {

        @Override 
        public void start(Stage stage) {
          // load the image
          Image image = new Image("file:" + getParameters().getNamed().get("file"));
          ...
        }

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

        /**
         * This is a example of the passing a parameters 
         * @param args the command line arguments
         */
        public static void main(String[] args) {
             (new Viewer()).caller(new String[]{"--file=path/to/file.jpg"});
        }

    }
  • 0
    В Java 8 (и во многих стилях развертывания в более ранних версиях) метод main (...) вообще не вызывается, поэтому этот подход не будет работать.
  • 1
    @James_D Да, я согласен с тобой. Я только пример для тестирования. Фактически, вы используете это в своей программе (new Viewer ()). Caller (new String [] {"- file = path / to / file.jpg"}); или (new Viewer ()). launch (new String [] {"- file = path / to / file.jpg"});
1

Вы можете просто передать неназванный параметр

Parameters parameters = getParameters();
List<String> unnamedParameters = parameters.getUnnamed();
filePath = unnamedParameters.get(0); // assumes path/to/file.jpg has been passed

Ещё вопросы

Сообщество Overcoder
Наверх
Меню