我的重绘功能有问题
编译时,错误是
pc3@pc3-desktop:~/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秒一次,图像将保持覆盖旧图像..
提前感谢那些回复的人..谢谢!!!!!!
答案 0 :(得分:2)
我强烈建议您阅读Swing教程,并了解Graphics类和Component
类中定义的方法。更具体地说,您对该声明的期望是什么:
g.repaint(1000, 0, 1440, 900)
要做什么?如果它根据某个间隔重新绘制您的某个组件,则可以使用TimerTask执行此操作。另外,通过阅读教程,您将看到为什么会出现编译错误。 repaint
上没有定义Graphics
方法。
作为旁注,请不要为方法绘画命名 - 因为paint
Component
方法,所以令人困惑
答案 1 :(得分:1)
我实际上并不知道您在哪里找到了repaint
Graphics
方法签名,因为它不存在。
您应该在组件上调用重绘,该组件是指定Graphics
的所有者,LoadImageApp
本身。
但首先你绝对需要更好地研究绘画如何与AWT和Swing一起使用,看看here。
另外,你应该使用一些安排更新阶段的东西,否则你的代码就没有任何意义了。没有任何东西可以周期性地加载想象力,也没有任何重新绘制框架的东西。我建议像Amir告诉你的那样TimerTask
。