0
我有一個觀察這我Window類。我有一個Model類,它擴展了包含一個ImagePanel類和一個Controller類的Observable。我添加到我的Model實例窗口中。更新()調用不叫
我的問題是:我model.notifyObservers()
之前做了打印,它的工作原理,另一個打印此通知後,它也能工作。但是我Observer方法的update()
裏面的打印沒有顯示出來?
從我的控制器,我把這個setImage方法:
public void setImage(File file)
{
try
{
image = ImageIO.read(file);
fileName = file.getPath();
} catch (IOException e)
{
e.printStackTrace();
}
width = image.getWidth();
height = image.getHeight();
imageType = image.getType();
pixels = new int[width * height];
image.getRGB(0, 0, width, height, pixels, 0, width);
this.setLocation(1000, 500);
System.out.println("ALRIGHT2");
model.change();
if (model.hasChanged())
{
System.out.println("ALRIGHT5");
model.notifyObservers();
System.out.println("ALRIGHT6");
}
}
這是我觀察的更新方法:
public void update(Observable o, Object arg) {
System.out.println("ALRIGHT3");
image_panel.repaint();
scrollPaneImage.repaint();
}
而且我在觀察構造這樣做:model.addObserver(this);
怎麼了?我以爲我選擇拜一個JFileChooser圖像不更新,因爲這種方法是不是叫......
你不顯示在您創建觀察者的實例,意思是我們應該如何知道什麼時候它被添加?請提供更多信息。 –
是的,我們需要更多的信息來幫助你。 –
我在我的主程序中創建了我的Observer實例,在我的程序入口點。包含此主函數的類位於另一個包含我的觀察者的包中,如果它有幫助的話。 – blondie