我想在一个继承自canvas的类中插入一张jpg的图,代码为
Dimension dimension = size();
int width = dimension.width;
int height = dimension.height;
g.setColor(Color.white);
g.fillRect(0, 0, width, height);Image vImage = getToolkit().getImage("save.jpg");
g.drawImage(vImage, 0, 0, width, height, this);但显示的是空白,这是为什么啊?
Dimension dimension = size();
int width = dimension.width;
int height = dimension.height;
g.setColor(Color.white);
g.fillRect(0, 0, width, height);Image vImage = getToolkit().getImage("save.jpg");
g.drawImage(vImage, 0, 0, width, height, this);但显示的是空白,这是为什么啊?
解决方案 »
- 关于正则表达式
- 关于java布局,为什么我的GridBagLayout没有效果
- Java 在数组中查找
- Collections binarySearch 问题
- 读文件 ... 不是很熟悉java,看看为什么出现错误?
- 需要 <标识符>估计很少人会
- 关于子类中构造函数的一点疑问???
- 对于高手来说虽说是简单但是对于新手来说可就不一样了啊!!请高手莅临指教指教啊!谢谢了啊!!
- java线程的一个小问题
- 为什么Winbuider中运行的界面跟eclipese中运行的不一样!有大神知道吗?
- 高分问菜鸟问题,jvm & jre ,到底有什么jvm不能做而jre可以做?
- JTextField如何响应TextEvent事件
g.drawImage(new ImageIcon("325_260.jpg").getImage(),0,0,this);
这句放到外面去声明,当到构造方法去创建
{
Dimension dimension = size();
int width = dimension.width;
int height = dimension.height;
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
if(open)
{
//FileInputStream fis = new FileInputStream("save.jpg");
vImage = Toolkit.getDefaultToolkit().getImage("save.jpg");
g.drawImage(vImage, 0, 0,this);
System.out.println("openning......");
open = false;
}
Shape shape = null;
Enumeration enumeration = vShape.elements();
g.setColor(Color.blue);
while(enumeration.hasMoreElements())
{
shape = (Shape)enumeration.nextElement();
shape.draw(g);
}
if(MouseTag)
{
g.setColor(color);
switch(command)
{
case Command.Line: g.drawLine(sx, sy,ex, ey);
break;
case Command.Rectangle:
if(sx < ex)
{
if(sy < ey) g.drawRect(sx, sy, ex - sx, sy - ey);
else g.drawRect(sx, ey, ex - sx, ey - sy);
}
else
{
if(sy < ey) g.drawRect(ex,ey,sx - ex, ey - sy);
else g.drawRect(ex,sy,sx - ex,sy - ey);
}
break;
case Command.Circle:
int w = (int)Math.sqrt((sx - ex) * (sx - ex) + (ey - sy) * (ey - sy));
g.drawArc(ex - w / 2,ey - w / 2,w, w,0,360);
break;
}
}
}public void openImage(ActionEvent e)
{
open = true;
repaint();
}
这个函数的repaint调用
这一句是应该这样声明的
Image vImage;这句作为你的类变量来声明
然后
vImage = Toolkit.getDefaultToolkit().getImage("save.jpg");
这个放到你的构造方法中去声明
因为getimage这个方法并没有立即就创建出来的,而是需要一段时间,所以放到构造方法中去,给它一个时间
public void paint(Graphics g)
{
Dimension dimension = size();
int width = dimension.width;
int height = dimension.height;
Image vImage;
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
if(open)
{
//FileInputStream fis = new FileInputStream("save.jpg");
vImage = Toolkit.getDefaultToolkit().getImage("save.jpg");
g.drawImage(vImage, 0, 0,this);
System.out.println("openning......");
open = false;
}还是不行啊
在paint方法里面使用就行了。还有可能你的图片根本没有读取到,你用的是相对路径,这个问题要你自己验证了。
还有,如果验证路径,怎么验证啊???