java - 如何在 JavaFX11 中设置多个 ImageView 的样式以不违反 DRY
问题描述
有没有办法设置多个 ImageView 和类似的样式?例如,我有这个代码:
Image pic1 = new Image(getClass().getResourceAsStream("/pic1.png"));
ImageView picView1 = new ImageView(pic1);
picView1.setFitHeight(PIC_SIZE);
picView1.setPreserveRatio(true);
picView1.setSmooth(true);
Image pic2 = new Image(getClass().getResourceAsStream("/pic2.png"));
ImageView picView2 = new ImageView(pic2);
...
我想更改所有图像的尺寸,有超过 10 张图像。我可以创建一个组并将所有视图添加到它,并以此为目标所有要操作的对象吗?JavaFX (11) 非常新。
解决方案
我可以建议将视图分组到一个类中,其中包含所有需要的方法。通过这种方式,您可以在以后轻松添加新功能、实例化新组并操作其中的视图。
public class ImageViewGroup {
private Map<String, ImageView> imagaViews;
public ImageViewGroup() {
imagaViews = new HashMap<>();
}
public void addNewImageView(String someIdentifierForRetrieval, String imagePath, double size) {
Image image = new Image(getClass().getResourceAsStream(imagePath));
ImageView imageView = new ImageView(image);
imageView.setFitHeight(size);
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
imagaViews.put(someIdentifierForRetrieval, imageView);
}
public void resizeAllImageViews(double newSize) {
for (ImageView imageView : imagaViews.values())
imageView.setFitHeight(newSize);
}
}
PS:代码未测试。
推荐阅读
- android - Android Firebase 控制台不显示日志
- python - 如何使用多线程或并行处理来减少运行时间?
- python - 将 Dataframes 与 .eq() 进行比较后获取索引
- google-cloud-platform - 启用 Google 平台 API
- homebrew - 在 mac mojave 中的 php 浏览器版本上未启用 Imagick 扩展
- python-2.7 - 使用python格式化字典
- angular - 不允许在电子中加载本地资源错误 - Angular v7.0.1
- r - 将数据表操作转换为 r 中的数据帧操作
- python - 从 Panda Dataframe 列中获取最小数据并添加列名
- javascript - 如何在套件脚本 2.0 中将 xml 转换为 JSON