2012-04-02 170 views
0

我與重繪功能重繪功能無法正常工作..

當我編譯出了問題,錯誤的是

[email protected]:~/Desktop$ javac LoadImageApp.java 
LoadImageApp.java:17: cannot find symbol 
symbol : method repaint(int,int,int,int,int) 
location: class java.awt.Graphics 
g.repaint(1000,0,0,1440,900) 
^ 
1 error 

,這是我的代碼 - >

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import java.io.*; 
import javax.imageio.*; 
import javax.swing.*; 


public class LoadImageApp extends Component { 

BufferedImage img; 

public void paint(Graphics g) { 
    g.drawImage(img, 0, 0, null); 
super.update(g); 
g.repaint(1000,0,0,1440,900); 
     } 

public LoadImageApp() { 
try{ 
    img = ImageIO.read(new File("screenshot.jpg")); 
    }catch(IOException e){} 
} 

public Dimension getPreferredSize() { 
    if (img == null) { 
      return new Dimension(100,100); 
    } else { 
     return new Dimension(img.getWidth(null), img.getHeight(null)); 
    } 
} 

public static void main(String[] args) { 

    JFrame f = new JFrame("Load Image "); 

    f.addWindowListener(new WindowAdapter(){ 
      public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 

f.add(new LoadImageApp()); 
    f.pack(); 
    f.setVisible(true); 



    } 
} 

誰能告訴我什麼是問題?我打算做一個程序來顯示圖像,並保持每0.1秒刷新一次。該圖片會從其他機器和每0.1秒接收和圖像將保持覆蓋舊形象..

在此先感謝那些誰回答。謝謝!!!!!!

回答

2

我強烈建議閱讀Swing教程,並瞭解Graphics類中定義的方法以及Component類。更具體地說,你期望的說法是:

g.repaint(1000, 0, 1440, 900) 

要做什麼?如果它基於某個間隔重新繪製了其中一個組件,則可以使用TimerTask執行此操作。另外從閱讀教程,你會看到爲什麼你有一個編譯錯誤。在Graphics上未定義repaint方法。

作爲一個側面說明,不命名你的方法漆 - 這是令人困惑,因爲在Component

+0

的g.repaint(...)i。從下面http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html#repaint%28long鏈路參考, %20int,%20int,%20int,%20int%29 和我對graphice和組件怎麼我是新來的Java很困惑。 ..呃..如果我想加載圖像,顯示和刷新,哪一個更適合我使用它?然後提前答覆.. – Eric 2012-04-02 06:15:27

1

已定義的paint方法其實我不知道你在哪裏發現repaint方法簽名Graphics因爲它不存在。

您應該改爲調用指定的Graphics的所有者的組件,即LoadImageApp本身。

但首先你絕對需要學習更好一點圖紙如何與AWT和Swing,看看here

此外,你應該使用的東西,你的時間表更新階段,否則你的代碼,因爲它是,沒有任何意義。沒有什麼是定期加載想象任何重畫框架的東西。我會建議像Amir告訴你的TimerTask

+0

g.repaint(...)我參考下面的鏈接http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html #重繪%28long,%20int,%20int,%20int,%20int%29 和我對graphice和組件怎麼我是新來的Java很困惑。 ..呃..如果我想加載圖像,顯示和刷新,哪一個更適合我使用它?請提前請求回覆。 – Eric 2012-04-02 06:17:40

+0

請注意,該方法是在Component類上定義的。閱讀我引用的教程。 – 2012-04-02 06:34:23