将参数传递给JavaFx

时间:2014-05-30 16:34:05

标签: java javafx

我正在尝试使用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应用程序的标准方法?

2 个答案:

答案 0 :(得分:1)

您可以简单地传递一个未命名的参数

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

答案 1 :(得分:1)

如果我理解你的问题,你已经为你的SubClass of Application传递了一个或多个参数。类抽象应用程序有一个名为launch的方法,它接收String [] args。然后你可以传递一个参数,例如。 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"});
        }

    }