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