我如何将图像附加到按钮而不是在 JavaFX 中设置文本? [无 FXML]

How can i attach an image to a button instead of setting a text in JavaFX? [NO FXML]

我是 JavaFX 的新手,我目前正在做一个项目(我不能在其中使用 fxml)。 我想创建一个显示图像的按钮,例如搜索图标。 我会提供一张图片来具体说明:

有什么建议吗?提前致谢!

您在问题中写道...

I am new to JavaFX

那我建议找个教程。我认为这比在这里发布问题要好,您可以在好的教程中找到答案。我推荐 this one.

以下代码在您链接到的图像中生成 GUI。请注意,包含图像 search.png 的文件必须位于与文件 ButonImg.class 相同的目录中,即编译以下代码时创建的文件.我建议阅读下面代码中 [JavaFX] 类 和方法的 javadoc 以了解它们的工作原理。 javadoc 可在线获取,可以通过搜索轻松找到,例如,如果您搜索单词 javafx hbox

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class ButonImg extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Label label = new Label("City");
        TextField txtFld = new TextField();
        Button button = new Button();
        Image img = new Image(getClass().getResourceAsStream("search.png"));
        ImageView imgView = new ImageView(img);
        button.setGraphic(imgView);
        HBox root = new HBox(10.0d, label, txtFld, button);
        root.setPadding(new Insets(20.0d, 20.0d, 20.0d, 20.0d));
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * Start here.
     */
    public static void main(String[] args) {
        launch(args);
    }
}

这是 运行 上述代码时显示的 GUI 图像。