2012-04-02 125 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