然后,通过JFileChooser获得路径,利用这个图片的路径,构建一个ImageIcon
最后,根据这个ImageIcon去给JLabel对象setIcon(ImageIcon对象)
具体地:
1.panel.add(label,BorderLayout.CENTER)
2.ImageIcon icon = new ImageIcon(url)
3.label.setIcon(icon)
下面的代码你把 .JPG改成BMP试试看,O(∩_∩)O~
package com.shlq.sample
import java.awt.BorderLayout
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import javax.swing.ImageIcon
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
public class ImagePane extends JPanel
{
JLabel jl = null
ImageIcon img = null
public ImagePane()
{
img = new ImageIcon( "E:\\Picture\\1.jpg ")
jl = new JLabel(img)
this.setLayout(new BorderLayout())
this.add(jl, BorderLayout.CENTER)
}
public static void main(String[] args)
{
JFrame test = new JFrame( "Image Pane ")
test.getContentPane().add(new ImagePane())
test.pack()
test.setVisible(true)
test.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
})
}
}
随机出现图片, 其实可以转换成一个随机数字的问题. 把图片存入一个数字, 那么只要随机的数字在图片数组的长度范围内即可. 稍微完善的地方就是要确保每次的下标,不要和上一次的相同,否则点击按钮就不会出现换图的效果了.
效果图
参考代码
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))
}
}