button - JavaFX - 从图标创建按钮
问题描述
我最近一直在使用 JavaFX 进行自定义控件,并且想知道创建一个简单的图像按钮的最佳方法是什么。例如,在 Stack Overflow 上,我们有这些按钮(我想实际上它们是链接,但我希望在 JavaFX 中具有相同的效果),它们看起来根本不像按钮。
在 JavaFX 中创建类似内容的最佳方法是什么?我知道您可以将图像添加到按钮,但是是否还有一种完全删除背景的方法(我怀疑有)?
解决方案
我在我的项目中使用自定义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);
推荐阅读
- vue.js - Vue 是否支持 svg 元素?
- excel - 是否可以摆脱 Excel 中的删除警告声音?
- sql - 如何从基于嵌套 json 的 BigQuery 表中进行选择?
- python - Docker & Django:谷歌地图 JavaScript API 错误
- mongoose - 根据一长串用户中的点数查找我当前的排名
- java - 在 Apache Common 的 FTPClient 中使用“RETR”FTP 命令
- oop - java.util.HashMap 字段阈值的设计?
- angular - 尝试在 Angular 中使用 Google People API 获取生日和性别
- php - 合并多维数组保留键不起作用
- amazon-web-services - 如何使用 AWS Connect 进行手动拨出电话?