首页 > 解决方案 > JavaFX - 从图标创建按钮

问题描述

我最近一直在使用 JavaFX 进行自定义控件,并且想知道创建一个简单的图像按钮的最佳方法是什么。例如,在 Stack Overflow 上,我们有这些按钮(我想实际上它们是链接,但我希望在 JavaFX 中具有相同的效果),它们看起来根本不像按钮。

在此处输入图像描述

在 JavaFX 中创建类似内容的最佳方法是什么?我知道您可以将图像添加到按钮,但是是否还有一种完全删除背景的方法(我怀疑有)?

标签: buttonjavafxiconscustom-controls

解决方案


我在我的项目中使用自定义ImageButton类。这类似于 fabian 的方法,但使用ImageView. 在我看来,实现起来也更简单一些。

public class ImageButton extends Button {

    private final String STYLE_NORMAL = "-fx-background-color: transparent; -fx-padding: 2, 2, 2, 2;";
    private final String STYLE_PRESSED = "-fx-background-color: transparent; -fx-padding: 3 1 1 3;";

    public ImageButton(Image originalImage, double h, double w) {

        ImageView image = new ImageView(originalImage);
        image.setFitHeight(h);
        image.setFitHeight(w);
        image.setPreserveRatio(true);
        setGraphic(image);
        setStyle(STYLE_NORMAL);

        setOnMousePressed(event -> setStyle(STYLE_PRESSED));
        setOnMouseReleased(event -> setStyle(STYLE_NORMAL));
    }

}

然后你只需要传递它Image和尺寸:

ImageButton newButton = new ImageButton(new Image("icon.png"), 16, 16);

推荐阅读