如何用图像替换按钮的默认外观? [使用 Scene Builder 的 JavaFx]
How to replace the default appearance of a button with an Image? [JavaFx using Scene Builder]
我希望我的按钮看起来像一张您可以点击的图片。但是当我尝试在上面放一个图像(具有透明背景)时,按钮的外观仍然存在
这是我目前尝试过的方法:
<fx:define>
<Image fx:id="btnImage" url="images/image.png" />
</fx:define>
和
<graphic>
<ImageView image="$btnImage" />
</graphic>
在 .fxml 文件上
并且还使用场景生成器的 ImageView
但正如我之前所说,按钮的外观如下:
您可以看到按钮的灰色背景仍然存在,我希望它看起来像这样:
基本上是一张您可以点击的图片。我如何让它发挥作用?
为什么不使用代码而不是使用 Scene Builder 轻松地做到这一点?
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());
}
});
}
}
您只需要将按钮的背景颜色设置为透明即可。你可以这样做:button.setStyle("-fx-background-color: transparent");
我希望我的按钮看起来像一张您可以点击的图片。但是当我尝试在上面放一个图像(具有透明背景)时,按钮的外观仍然存在
这是我目前尝试过的方法:
<fx:define>
<Image fx:id="btnImage" url="images/image.png" />
</fx:define>
和
<graphic>
<ImageView image="$btnImage" />
</graphic>
在 .fxml 文件上
并且还使用场景生成器的 ImageView
但正如我之前所说,按钮的外观如下:
您可以看到按钮的灰色背景仍然存在,我希望它看起来像这样:
基本上是一张您可以点击的图片。我如何让它发挥作用?
为什么不使用代码而不是使用 Scene Builder 轻松地做到这一点?
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());
}
});
}
}
您只需要将按钮的背景颜色设置为透明即可。你可以这样做:button.setStyle("-fx-background-color: transparent");