怎么在java面板中显示一张图片

Python020

怎么在java面板中显示一张图片,第1张

是这样的,你在面板上搞一个和面板一样大的JLabel

然后,通过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))

}

}