简单问题:为什么在JAPNEL上画背景图,图片闪了一下就消失了

zlmlczcmlvsaav 2013-12-21 11:30:01
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class shizhong extends JPanel
{ private static Graphics g;
public shizhong() throws IOException //throws IOException
{
}

public static void main(String args[]) throws IOException
{
shizhong s=new shizhong();
s.shizz();
JFrame jj=new JFrame();

jj.getContentPane().add(s,BorderLayout.CENTER);

jj.setSize(300,300);


jj.setVisible(true);
}
public void shizz() throws IOException
{
g=getGraphics();;

}

public void paintComponent(Graphics g)
{

File file=new File("image/shizhong.png");



BufferedImage bi = null;
try {
bi = ImageIO.read(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Image im=(Image)bi;

g=this.getGraphics();
g.drawImage(im,0,0,null);
}
}






...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloomyfish 2013-12-26
  • 打赏
  • 举报
回复
说实话,你的程序如果能运行才是神奇!帮你改了一下! 1.永远不要在paintComponent里面加载任何图片资源,绝对禁止! 2.永远不要自己尝试获取Swing 2D图形设备对象!而是直接使用!
package com.gloomyfish.swing;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestJPanel extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// private static Graphics g; very bad way!!!
	private BufferedImage bi;
	public TestJPanel() throws IOException // throws IOException
	{

		File file = new File("D:\\share_folder\\snow2006.jpg");
		bi = null;
		try {
			bi = ImageIO.read(file);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String args[]) throws IOException {
		TestJPanel s = new TestJPanel();
		JFrame jj = new JFrame();

		jj.getContentPane().add(s, BorderLayout.CENTER);

		jj.setSize(300, 300);

		jj.setVisible(true);
	}

	public void paintComponent(Graphics g) {
		if(bi != null)
		{
			g.drawImage(bi, 0, 0, null);			
		}
	}
}
aaaabbbccd9876 2013-12-21
  • 打赏
  • 举报
回复
Jframe改成Frame试试

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧