Java 仅在一个Vaadin实例中显示图像

Java 仅在一个Vaadin实例中显示图像,java,image,singleton,vaadin,Java,Image,Singleton,Vaadin,我是java和Vaadin的新手。我和maven做了一个简单的项目。这是可行的,但有些行为与实际情况不同。最重要的png图像只显示在一个窗口中。应用程序应该在许多窗口中显示图像 有一个管理类,其中包含下一个和上一个按钮,这些按钮正在工作,但在从管理窗口打开客户端窗口png后消失 这是一个普遍的问题吗?我是否必须以某种方式指定图像对象可以多次使用 ClientWindow.class AdminWindow.class-singleton,包含客户端窗口列表,提醒他们当前映像更改 Displaye

我是java和Vaadin的新手。我和maven做了一个简单的项目。这是可行的,但有些行为与实际情况不同。最重要的png图像只显示在一个窗口中。应用程序应该在许多窗口中显示图像

有一个管理类,其中包含下一个和上一个按钮,这些按钮正在工作,但在从管理窗口打开客户端窗口png后消失

这是一个普遍的问题吗?我是否必须以某种方式指定图像对象可以多次使用

ClientWindow.class

AdminWindow.class-singleton,包含客户端窗口列表,提醒他们当前映像更改

Displayer.class-单例

我甚至尝试在布局中替换之前复制图像。有人知道发生了什么事吗

这是显示器类:

包多用户

//import java.io.File;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.vaadin.server.FileResource;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinService;
import com.vaadin.ui.Image;

public class Displayer {

//deklaracja singletonu
private final static Displayer instance = new Displayer();

public static Displayer getInstance() {
    return instance;
}





String basepath = VaadinService.getCurrent()
                  .getBaseDirectory().getAbsolutePath();





int currentImageIndex=1;
int imagesAmount= 3;

private Displayer() {


}




private Image getImageResource(int index) {
    FileResource resource = new FileResource(new File(basepath + "/WEB-INF/images/" + index +".png"));
    Image image =  new Image("",resource);
    return image; 
}



public void nextImage() {
    if(currentImageIndex==imagesAmount) {
        currentImageIndex=1 ;       
    } 
    else{           
        currentImageIndex = currentImageIndex + 1;                  
    }
}
public void previousImage() {
    if(currentImageIndex==1) {
        currentImageIndex = imagesAmount;

    } else{             
        currentImageIndex = currentImageIndex - 1;          
    }
}




public Image getCurrentImage() {
    Image currentImage = getImageResource(currentImageIndex);
    return currentImage;
}
}
*

不能将同一图像对象添加到不同的组件。组件(图像)只能有一个父级。但是不同的图像可能具有相同的资源


不要使用
List
而是使用
List
并且当您将图像添加到父组件时,始终使用带有
getCurrentResource()
的新图像对象。请共享您的代码,以便我们可以确切地看到您在做什么。因此,当我复制图像对象时,它仍然是相同的吗?我必须在这个类中操作资源路径而不是图像列表索引吗?顺便问一下,如何复制图像对象?我正在制作另一个图像iObject,并且image1=image2。问题已经解决了。
//import java.io.File;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.vaadin.server.FileResource;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinService;
import com.vaadin.ui.Image;

public class Displayer {

//deklaracja singletonu
private final static Displayer instance = new Displayer();

public static Displayer getInstance() {
    return instance;
}





String basepath = VaadinService.getCurrent()
                  .getBaseDirectory().getAbsolutePath();





int currentImageIndex=1;
int imagesAmount= 3;

private Displayer() {


}




private Image getImageResource(int index) {
    FileResource resource = new FileResource(new File(basepath + "/WEB-INF/images/" + index +".png"));
    Image image =  new Image("",resource);
    return image; 
}



public void nextImage() {
    if(currentImageIndex==imagesAmount) {
        currentImageIndex=1 ;       
    } 
    else{           
        currentImageIndex = currentImageIndex + 1;                  
    }
}
public void previousImage() {
    if(currentImageIndex==1) {
        currentImageIndex = imagesAmount;

    } else{             
        currentImageIndex = currentImageIndex - 1;          
    }
}




public Image getCurrentImage() {
    Image currentImage = getImageResource(currentImageIndex);
    return currentImage;
}