2012-04-02 4 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. Кроме того, прочитав учебники, вы увидите, почему у вас ошибка компиляции. Метод repaint не определен на Graphics.

Как примечание стороны, не называйте ваш метод краски - это заблуждение, так как есть paint метод уже определен в Component

+0

g.repaint (...) ссылка на ссылку ниже http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html#repaint%28long, % 20int,% 20int,% 20int,% 20int% 29 и я очень смущен о графике и компоненте coz. Я новичок в java. .. erm .. если я хочу загрузить изображение, отображение и обновление, которое 1 больше подходит для меня, чтобы использовать его? thenks заранее для ответа .. – Eric

1

Я на самом деле не знаю, где вы нашли, что repaint сигнатуру метода для Graphics поскольку оно не существует.

Вы должны вместо этого переписать на компонент, который является владельцем указанного Graphics, который является самим LoadImageApp.

Но прежде всего вам нужно немного поучиться, как работает рисунок с AWT и Swing, посмотрите here.

В дополнение, вы должны использовать что-то, что запланирует фазу обновления, иначе ваш код, как есть, не имеет никакого смысла. Нет ничего, что периодически загружает воображение ни того, что перекрашивает рамку. Я бы предложил TimerTask, как сказал вам Амир.

+0

g.repaint (...) ссылка на ссылку ниже http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html # repaint% 28long,% 20int,% 20int,% 20int,% 20int% 29 и я очень смущен о графике и компоненте coz Я новичок в java. .. erm .. если я хочу загрузить изображение, отображение и обновление, которое 1 больше подходит для меня, чтобы использовать его? thenks заранее для ответа .. – Eric

+0

Обратите внимание, что метод определен в классе Component. Прочтите учебник, на который я ссылаюсь. –

Смежные вопросы