鼠标上单击java显示随机图像

时间:2015-08-03 16:32:38

标签: java image jframe mouseevent

我想在java中的鼠标点击事件中显示随机图像。 就像每次点击鼠标一样,随机的图片弹出。 但是当我编译代码时,图像不会显示出来。 弹出J框窗口但不弹出我的图像,单击

时没有任何反应
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.Random;

import javax.imageio.*;
import javax.swing.*;

public class DisplayMascot extends Component {

   private BufferedImage m2012, m2013, m2014, m2015;
   public BufferedImage img;
   public DisplayMascot(){
    try {
        m2012 = ImageIO.read(new File("gishwhes2012.png"));
        m2013 = ImageIO.read(new File("gishwhes2014-full-logo.png"));
        m2014= ImageIO.read(new File("mongilianbranding.jpg"));
        m2015 = ImageIO.read(new File("gishwhes2015-full-logo.png"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
   public void mouseClicked(MouseEvent e){
    Random rand = new Random();
    int i = rand.nextInt(4-1+1)+1;

    if (i==1)
        img = m2012;
    else if (i==2)
        img = m2013;
    else if (i==3)
        img = m2014;
    else if (i==4)
        img = m2015;
   }

   public void paint(Graphics g){//dram image
      g.drawImage(img,0,0,null);
   }

   public static void main(String[] args){
   }
}

1 个答案:

答案 0 :(得分:0)

不要扩展Component以显示其首选大小的图像。相反,您可以使用JLabel。然后,当您想要更改图像时,您可以使用:

label.setIcon( new ImageIcon(...) );

不要创建4个变量来表示每个图像。如果您想要处理10张图片怎么办?现在你需要10个变量,你的嵌套if语句会变得更大。

相反,您可以创建ArrayList来保存图像。然后,当您想要显示随机图像时,可以使用ArrayList的shuffle(...)方法。然后,您可以拍摄列表中的第一张图像,并将其用作标签的图标。

相关问题