在JavaFX中使用用户选择的图像创建一个按钮

时间:2018-03-20 19:27:46

标签: java javafx

我正在创建一个Java应用程序,它允许用户单击打开文件选择器的按钮,并在选择图像时创建一个带有该图像的按钮和文本字段中的文本。它在没有图像的情况下工作,但我无法弄清楚如何在我的生活中为按钮添加图像。

上下文:btns是按钮的GridPane,lastTopIn是一个整数,用于跟踪GridPane的最后一个使用列。点击后按钮会自动删除。

FileChooser fc = new FileChooser()
fc.setTitle("Choose Image for Button");
File file = fc.showOpenDialog(null);
lastTopIn++;
Button thebutton = new Button((String) tf.getText(), new ImageView(new Image(getClass().getResourceAsStream("file://"+file.getAbsolutePath()))));
    thebutton.setOnMouseClicked(new EventHandler<Event>() {
        @Override
        public void handle(Event event) {
            btns.getChildren().remove(thebutton);                           
        }
    });
btns.add(thebutton, lastTopIn,1);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要显示文件系统上文件的图像,请将文件转换为URI,而不是尝试将其作为资源加载:

Button thebutton = new Button(tf.getText(), 
    new ImageView(new Image(file.toURI().toString())));

file.ToURI()将创建正确的URI方案,并正确转义任何字符,例如文件名中合法但在URI中非法的空格。

请注意,作为一种快捷方式,您可以将URI直接传递给ImageView构造函数,它将为您创建图像:

Button thebutton = new Button(tf.getText(), new ImageView(file.toURI().toString()));