如何用图像替换按钮的默认外观?[JavaFx使用Scene Builder]

问题描述 投票:0回答:2

我希望我的按钮看起来只是一个图片,你可以点击。但当我尝试在上面放一张透明背景的图片时,按钮的外观仍然存在。

这是我目前试过的。

<fx:define>
   <Image fx:id="btnImage" url="images/image.png" />
</fx:define>

<graphic>
        <ImageView image="$btnImage" />
</graphic>

在.fxml文件上

也可以使用场景生成器的ImageView。

enter image description here

但正如我前面所说,这个按钮是这样的。

enter image description here

你可以看到按钮的灰色背景仍然存在,我希望它看起来像这样。

enter image description here

基本上是一个你可以点击的图像。我怎么让它发挥作用呢?

javafx scenebuilder
2个回答
0
投票

你只需要把按钮的背景色设置成透明的就可以了。你可以这样做。button.setStyle("-fx-background-color: transparent");


1
投票

为什么不使用代码而不是使用场景生成器来实现呢?

package testing;

import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class Controller implements Initializable {

    @FXML public Button myButton;

    @Override
    public void initialize(URL location, ResourceBundle resources)  {

        File imageFile = new File("images/image.png");
        Image image = new Image(imageFile.toURI().toString());
        ImageView imageView = new ImageView(image);

        myButton.setText("");
        myButton.setStyle("-fx-background-color: transparent;");
        myButton.setGraphic(imageView);


        // Add an event click to the button
        myButton.setOnAction(new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent event) {
                System.out.println("You clicked: " + ((Button)event.getSource()).getId());
            }                
        });

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.