Java图片显示不出来,怎么解决

Python021

Java图片显示不出来,怎么解决,第1张

有两个问题:

图片路径没有写对,图片在 src 下,图片路径应是 src/海洋.png,正确的写法应是 image = new ImageIcon("src/海洋.png")

image = new ImageIcon("src/海洋.png") 应该放在 label = new JLabel(image)前面。

如下例:

import javax.swing.*

class JPanelDemo extends JPanel {

JLabel label

JTextField text

JButton button

ImageIcon image

public JPanelDemo() {

image = new ImageIcon("src/test.png")

label = new JLabel(image)

text = new JTextField(20)

button = new JButton("确定")

add(label)

add(text)

add(button)

}

}

public class App extends JFrame {

public App() {

this.setSize(500, 400)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

this.add(new JPanelDemo())

}

public static void main(String[] args) {

new App().setVisible(true)

}

}

呵呵,很明确的告诉你:可以!

代码半小时后出来!!!

……

终于出来了(呵呵,好像超过了半小时哈)且看代码:

import java.awt.Color

import java.awt.Graphics

import java.awt.image.BufferedImage

import java.io.File

import java.io.IOException

import javax.imageio.ImageIO

import javax.swing.JApplet

public class Test extends JApplet{

String addrs="F:\\images\\mm.bmp"//改成自己的图片路径

BufferedImage mm,child

CutImage ci

public Test(){

try {

mm=ImageIO.read(new File(addrs))

} catch (IOException e) {

System.out.println("图片读取失败!")

e.printStackTrace()

}

ci=new CutImage(mm)

child=ci.getChildImage(50, 0, 150, 220)

}

public void init(){

}

public void paint(Graphics g){

g.setColor(Color.red)

g.drawString("原图:",0,10)

g.drawImage(mm, 20,10,this)

g.drawString("ci.getChildImage(50, 0, 150, 220)截取后的图片",mm.getWidth()+30,10)

g.drawImage(child, mm.getWidth()+50,20,this)

}

}

import java.awt.Image

import java.awt.image.BufferedImage

public class CutImage {

private BufferedImage img

private BufferedImage child

public CutImage(){

}

public CutImage(BufferedImage im){

img=im

}

public CutImage(Image im){

img=(BufferedImage)im

}

public void setImg(BufferedImage img) {

this.img = img

}

public BufferedImage getChildImage(int x,int y,int width,int height) {

int cw=width

int ch=height

int pw=img.getWidth()

int ph=img.getHeight()

if(pw<x+width){

System.out.println("给出的参数超出原图片的范围!程序会自动减小宽度或高度")

cw=pw-x

}

if(ph<y+height){

System.out.println("给出的参数超出原图片的范围!程序会自动减小宽度或高度")

ch=ph-y

}

child=new BufferedImage(cw,ch,BufferedImage.TYPE_INT_ARGB )

for(int i=0i<chi++){

for(int j=0j<cwj++){

child.setRGB(j, i, img.getRGB(x+j, y+i))

}

}

return child

}

}

呵呵,希望楼主能够满意哦,如果你愿意的话,稍微改一下代码就可以把截取的图片child报春到你的电脑上了。下面程序的运行效果吧!