请教bufferimage中的图像怎么绘制在jpanel中那?

landmine 发布于 2012/07/18 15:53
阅读 1K+
收藏 0
用jfielchoose选择了图片后要把这个图片保存在jpanel中,请问怎么处理?
加载中
0
逝水fox
逝水fox
是做JPanel的背景,前面还要放组件吗?
0
landmine
landmine
不是做背景,是把这张图片在panel中显示,并进行再编辑。
0
逝水fox
逝水fox
需要继承JPanel,重写paintComponent方法调用底层的Graphics进行绘制。
0
landmine
landmine

代码如下

 

bi = ImageIO.read(new FileInputStream(imgPath));
					// bufferImg = ImageIO.read(fileStream);
					System.out.println(bufferImg);
					Graphics gs = drawPanel.getGraphics();
					paintComponent(gs);

public void paintComponent(Graphics g) {
		g.drawImage(bi, 600, 600, null);

		g.drawString("123...", 50, 100);
	}

0
landmine
landmine
图片没有显示出来,能不能写些代码那?
逝水fox
逝水fox
稍等 我找下以前写的Demo
0
逝水fox
逝水fox

Panel的

public class MyPanel extends JPanel {
	private static final long serialVersionUID = 1L;

	private BufferedImage image = null;

	public MyPanel() {
	}

	@Override
	protected void paintComponent(Graphics graphics) {
		if (image == null) {
			super.paintComponent(graphics);
		} else {
			graphics.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
		}
	}

	public BufferedImage getImage() {
		return image;
	}

	public void setImage(BufferedImage image) {
		this.image = image;
	}
}

 操作的时候

JFileChooser chooser = new JFileChooser(".");
if (chooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
	BufferedImage image = ImageIO.read(chooser.getSelectedFile());
	frame.myPanel.setImage(image);
	// 重绘
	frame.validate();
	// 也可以用frame.myPanel.repaint();
}

 

 

 

 

0
landmine
landmine
以解决 谢楼兄!
返回顶部
顶部