随机出现图片, 其实可以转换成一个随机数字的问题. 把图片存入一个数字, 那么只要随机的数字在图片数组的长度范围内即可. 稍微完善的地方就是要确保每次的下标,不要和上一次的相同,否则点击按钮就不会出现换图的效果了.
效果图
参考代码
import java.awt.*import javax.swing.*
//java8测试通过
public class DemoFrame extends JFrame {
JButton jbChange
JLabel jlImg
static final ImageIcon IMG1 = new ImageIcon(
Toolkit.getDefaultToolkit().createImage(DemoFrame.class.getResource("/img/1.jpg")))
static final ImageIcon IMG2 = new ImageIcon(
Toolkit.getDefaultToolkit().createImage(DemoFrame.class.getResource("/img/2.jpg")))
static final ImageIcon IMG3 = new ImageIcon(
Toolkit.getDefaultToolkit().createImage(DemoFrame.class.getResource("/img/3.jpg")))
static final ImageIcon IMG4 = new ImageIcon(
Toolkit.getDefaultToolkit().createImage(DemoFrame.class.getResource("/img/4.jpg")))
static final ImageIcon[] IMGS = { IMG1, IMG2, IMG3, IMG4 }
int nowIndex//用于记录现在的下标
public DemoFrame() {
JPanel jps = new JPanel()
jbChange = new JButton("换图")
jps.add(jbChange)
add(jps, BorderLayout.SOUTH)
JPanel jpc = new JPanel()
jlImg = new JLabel()
nowIndex=getRandomIndex()
jlImg.setIcon(IMGS[nowIndex])
jpc.add(jlImg)
add(jpc)
setSize(272, 390)
setLocationRelativeTo(null)
setDefaultCloseOperation(EXIT_ON_CLOSE)
setTitle("随机换图")
//按钮点击事件
jbChange.addActionListener(e -> {
int temp=getRandomIndex()//随机产生一个下标
while(temp==nowIndex) {//如果这个下标和现在的下标一直,那么就换一个
temp=getRandomIndex()
}
nowIndex=temp//更新现在的下标
jlImg.setIcon(IMGS[nowIndex])//把JLabel的图片换掉
})
}
//产生随机下标
private int getRandomIndex() {
return (int) (Math.random()*IMGS.length)
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> new DemoFrame().setVisible(true))
}
}
给个例子你参考一下:给按钮bntOk添加监听事件
bntOk.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e1) {
label2= new JLabel()
frame.add(label2)
label2.setBounds(50, 50, 400, 200)
label2.setIcon(new ImageIcon("d:\\love.JPG")) //可以换成任意你想要的图片
}
})
点击按钮前,是这样的
点击显示按钮后,是这样的
完整的程序如下:
import java.awt.event.MouseAdapter
import java.awt.event.MouseEvent
import javax.swing.*
import java.awt.*
public class wuziqi extends JFrame{
private JPanel frame
private JButton bntOk
private JLabel label2
private ImageIcon asdIcon = new ImageIcon("d:\\love.JPG")//换成你要显示的图片
public static void main(String[] args){
wuziqi mb=new wuziqi()
}
public wuziqi(){ //构造函数,搭建显示界面
frame= new JPanel()
getContentPane().add(frame, BorderLayout.CENTER)
frame.setLayout(null)
frame.setBounds(100, 100, 576, 440)
this.setSize(500, 500)
this.setResizable(false)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
this.setTitle("点击按钮,显示图片")
this.setVisible(true)
bntOk = new JButton()
frame.add(bntOk)
bntOk.setText("显示")
bntOk.setLocation(10, 10)
bntOk.setBounds(150, 300, 66, 30)
bntOk.addMouseListener(new MouseAdapter() //给按钮加上监听事件
{
public void mouseClicked(MouseEvent e1) {
label2= new JLabel()
frame.add(label2)
label2.setBounds(50, 50, 400, 200)
label2.setIcon(asdIcon) //label内容为图片
}
})
}
}