javafx - 图像按钮javafx

标签 javafx fxml

快速问题,如何让图像覆盖 fxml 中的整个按钮。

所以按钮的所有可见部分都是边框。由于某种原因,当我尝试调整图像大小以适应按钮时,会自动调整大小。我正在使用场景生成器。 我正在使用 FXML。

按钮大小为 prefHeight="38.0"prefWidth="50.999900000002526"。

记住我不想看到按钮的背景。我希望它被图像覆盖。

非常感谢,你们帮了很大的忙。

最佳答案

您正在寻找的是使用填充

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Region.html#setPadding-javafx.geometry.Insets-

setPadding

public final void setPadding(Insets value);

Sets the value of the property padding.

Property description: The top, right, bottom, and left padding around the region's content. This space will be included in the calculation of the region's minimum and preferred sizes. By default padding is Insets.EMPTY. Setting the value to null should be avoided.

它没有提到默认值,但您可以通过输入 button.getPadding();

轻松获得默认值

我决定自己测试一下,得到的值为

 Insets [top=4.0, right=8.0, bottom=4.0, left=8.0]

这就是为什么您遇到它未填满的问题的原因。调整大小会影响按钮,图形是按钮的一部分。


接下来我们必须定义我们的插图以获得所需的效果。

为了定义我们的填充,我们需要查看插图

https://docs.oracle.com/javase/8/javafx/api/javafx/geometry/Insets.html

有一个 Empty 的静态字段,所以让我们使用它。

Button btn = new Button();
btn.setGraphic(new ImageView("image"));
btn.setPadding(Insets.EMPTY);

将产生所需的效果,并产生结果

Insets [top=0.0, right=0.0, bottom=0.0, left=0.0]

但是...仍然有一个边框,可能只有在焦点对准时才会出现...

如果您想摆脱边框,请阅读下文。


我决定测试负值是否有效,-1 确实有效。

本质上,如果您为插图指定 -1 值,它将切断按钮周围的边框,因此按钮本质上是一个图像


public class JavaFXApplication extends Application {

@Override
public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setGraphic(new ImageView(image));
    btn.setPadding(new Insets(-1,-1,-1,-1));
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            System.out.println(btn.getPadding());
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Button Image!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

关于javafx - 图像按钮javafx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473207/

相关文章:

JavaFX 选项卡式 Pane ,每个选项卡上都有一个 TableView ?

java - 强制停止在外部线程上运行的 Java Files.copy()

java - 定义 ComboBoxTableCell 和 ComboBox 节点 FXML

java - 如何使用 java11 在 FXML 中使用 javaFX 类型的代码推荐器?

javafx - 在 FXML 中创建 FileChooser

Javafx 使用日期选择器

java - 如何删除分隔符内的空间?

java - 为什么这个javafx fxml不调整大小?

javafx-2 - 按下按钮时更改场景 Fxml

java - 使用 ListView 复制控制台功能