为什么bufferedImage setColor不起作用

Jerry_shower 2011-02-12 03:53:27
各位大侠:
我的测试思路是这样的,在JFrame里嵌套一个Jpanel,在Jpanel里展现一个白色的背景色。

m_canvas = new BufferedImage(400, 450, BufferedImage.TYPE_INT_BGR);
g2d =(Graphics2D)m_canvas.getGraphics();
g2d.setColor(Color.white);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
m_canvas.flush();

调用Jpanel.paint()方法,用 g.drawImage(m_canvas, 0, 0, null);画出来,可是运行结果是黑色的,请高手指教错再哪里?


package JFrameTest;

import JFrameTest.ScrollablePicture;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class ImageDemo extends JFrame {

private MainCavas panel;
private boolean isDrawRect = false;

public ImageDemo() {

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setBounds((d.width - 800) / 2, (d.height - 600) / 2, 800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);

panel = new MainCavas();

JButton b1 = new JButton("1");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("calling b1");
}
});
b1.setBounds(2, 2, 150, 30);
this.add(b1);

JButton b2 = new JButton("2");
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("calling b2");
}
});
b2.setBounds(200, 2, 150, 30);
this.add(b2);

panel.setBounds(2, 70, 400, 450);
this.add(panel);
setVisible(true);
}

public BufferedImage getCopy(BufferedImage in) {
BufferedImage temp = new BufferedImage(in.getWidth(), in.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = temp.createGraphics();
g2d.drawImage(in, null, 0, 0);
return temp;
}


public static void main(String[] args) throws IOException {
new ImageDemo();
}

class MainCavas extends JPanel {
public BufferedImage m_canvas;
public ImageIcon m_mainIcon;
public JScrollPane m_scrollPane = new JScrollPane();
public AffineTransform t;
public BufferedImage m_backGround;
public Graphics2D g2d;
public ScrollablePicture m_picture;

public int clc=0;

public MainCavas() {
m_canvas = new BufferedImage(400, 450, BufferedImage.TYPE_INT_BGR);
g2d =(Graphics2D)m_canvas.getGraphics();
g2d.setColor(Color.white);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
m_canvas.flush();

}

public void paint(Graphics g)
{
// g.drawImage(m_canvas, 0, 0, Color.red, null);
g.drawImage(m_canvas, 0, 0, null);
}
// public void paintComponent(Graphics g) {
// System.out.println("calling paintComponent...");
// super.paintComponent(g);
//
//
// }
}
}



...全文
168 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fabruyi553820367 2012-03-04
  • 打赏
  • 举报
回复
g2d.setColor(Color.white);改成g2d.setColor(Color.WHITE);看看,有木有效果

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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