2011-09-19 101 views
0

我在JApplet裏面有一個圖像,我希望它出現在一個隨機位置。它會在1秒後消失,並在另一個隨機位置再次出現。如何讓圖像在隨機位置閃爍?

我該如何實現'在隨機位置閃爍'?

import javax.imageio.ImageIO; 
import javax.swing.*; 
import java.awt.*; 
import java.net.URL; 

public class Random extends JApplet 
{ 

Image ball; 

    public void init() 
    { 
    try 
    { 
     URL pic = new URL(getDocumentBase(), "ball.gif"); 
     ball = ImageIO.read(pic); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 

    public void paint(Graphics g) 
    { 
     if (ball != null) 
     { 
     g.drawImage(ball,50,50,50,50,this); 
     } 
    } 
} 

回答

2

Image Blinker

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import javax.swing.*; 
import java.util.Random; 

class ImageBlinker extends JComponent { 

    BufferedImage image; 
    boolean showImage; 
    int x = -1; 
    int y = -1; 
    Random r; 

    ImageBlinker() { 
     // put your image reading code here.. 
     image = new BufferedImage(32,32,BufferedImage.TYPE_INT_ARGB); 
     Graphics g = image.createGraphics(); 
     g.setColor(Color.ORANGE); 
     g.fillOval(0,0,32,32); 
     // END - image read 

     r = new Random(); 
     ActionListener listener = new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
       if (image!=null) { 
        if (!showImage) { 
         int w = image.getWidth(); 
         int h = image.getHeight(); 
         int rx = getWidth()-w; 
         int ry = getHeight()-h; 
         if (rx>-1 && ry>-1) { 
          x = r.nextInt(rx); 
          y = r.nextInt(ry); 
         } 
        } 
        showImage = !showImage; 
        repaint(); 
       } 
      } 
     }; 
     Timer timer = new Timer(600,listener); 
     timer.start(); 

     setPreferredSize(new Dimension(150,100)); 
     JOptionPane.showMessageDialog(null, this); 
     timer.stop(); 
    } 

    public void paintComponent(Graphics g) { 
     g.setColor(Color.BLUE); 
     g.fillRect(0,0,getWidth(),getHeight()); 
     if (showImage && image!=null) { 
      g.drawImage(image,x,y,this); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new ImageBlinker(); 
      } 
     }); 
    } 
} 
+0

眨眼睛,我真的很感激。如果我在橢圓內放置一個「image.gif」怎麼辦?可能嗎? – sack

+0

*如果我把一個「image.gif」放在橢圓內怎麼辦?* 當你嘗試**時發生了什麼? *是否有可能?*對我或其他任何人都很容易,但我不能說對你有沒有可能。 –

+0

現在確定..謝謝..! :-) – sack

2

對於我的錢,我把圖像在一個ImageIcon的的ImageIcon在JLabel,然後用一個Swing定時器和隨機對象隨機移動的JLabel有關。你必須在一個容器中移動它(contentPane將會這樣做),它的佈局設置爲null,並且你必須指定JLabel的大小作爲它的首選大小。

+0

但是當我使用的ImageIcon圖像不會出現,當它設置爲圖像,只出現。我使用該URL來使其顯示,但沒有JLabel。 – sack

+1

然後請告訴我們你在做什麼,因爲它適合我。 –

+0

我編輯了我的問題,並在上​​面添加了我的代碼。他們的代碼只是將圖像顯示在JApplet中。 – sack