Как стилизовать несколько ImageViews, чтобы не нарушать DRY в JavaFX11 - PullRequest
0 голосов
/ 13 февраля 2019

Есть ли способ стилизовать несколько изображений и тому подобное?Например, у меня есть этот код:

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).

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы можете сохранить ссылку на ImageViews в списке.

List<ImageView> imageViews = new ArrayList<>();
...
Image pic1 = new Image(getClass().getResourceAsStream("/pic1.png"));
ImageView picView1 = new ImageView(pic1);
picView1.setFitHeight(PIC_SIZE);
picView1.setPreserveRatio(true);
picView1.setSmooth(true);
imageViews.add(picView1);

Image pic2 = new Image(getClass().getResourceAsStream("/pic2.png"));
ImageView picView2 = new ImageView(pic2);
imageViews.add(picView2);

...

Когда вам нужно изменить размер изображений, вы можете просто перебрать список и установить для свойства fitHeight значение, которое вы хотите.

for (ImageView imageView : imageViews) {
    imageView.setFitHeight(PIC_SIZE);
}
0 голосов
/ 15 февраля 2019

Я могу предложить сгруппировать представления в один класс со всеми необходимыми в нем методами.Таким образом, вы можете легко добавлять новые функции позже, создавать новые группы и управлять представлениями в них.

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: код не проверен.

...