我想在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){
}
}
答案 0 :(得分:0)
不要扩展Component以显示其首选大小的图像。相反,您可以使用JLabel
。然后,当您想要更改图像时,您可以使用:
label.setIcon( new ImageIcon(...) );
不要创建4个变量来表示每个图像。如果您想要处理10张图片怎么办?现在你需要10个变量,你的嵌套if语句会变得更大。
相反,您可以创建ArrayList
来保存图像。然后,当您想要显示随机图像时,可以使用ArrayList的shuffle(...
)方法。然后,您可以拍摄列表中的第一张图像,并将其用作标签的图标。