Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给JavaFx_Java_Javafx - Fatal编程技术网

将参数传递给JavaFx

将参数传递给JavaFx,java,javafx,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; } @Over

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

您只需传递一个未命名的参数即可

Parameters parameters = getParameters();
List<String> unnamedParameters = parameters.getUnnamed();
filePath = unnamedParameters.get(0); // assumes path/to/file.jpg has been passed
Parameters=getParameters();
List unnamedParameters=parameters.getUnnamed();
filePath=unnamedParameters.get(0);//假定已传递路径/to/file.jpg

如果我理解您的问题,您已经为应用程序的子类传递了一个或多个参数。类抽象应用程序有一个名为launch的方法,该方法接收字符串[]args。然后您可以为此传递一个参数,例如,
String[]{--nameOfParameters=patameters的值“,…}
。获取
getParameters().getNamed().get(“参数名称”)
的参数

下面我举一个例子

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"});
        }

    }

应该可以回答这个问题。在Java 8(以及早期版本中的许多部署样式)中,根本不调用main(…)方法,因此这种方法不起作用。@James_D是的,我同意你的看法。我是测试的唯一例子。事实上,您可以在程序(newviewer())中使用它;启动(新字符串[]{--file=path/to/file.jpg“});