java中在JPanel上绘制照片的问题,毕业设计,,急死了。。谢谢...
这个内部类,就是在一个面板上绘制一个照片,我先定义一个JPanlepanel=newMyPanel()就可以在panel上画图publicclassMyPanelexte...
这个内部类,就是在一个面板上绘制一个照片,我先定义一个JPanle panel=new MyPanel()
就可以在panel上画图
public class MyPanel extends
JPanel
{
public void paintComponent(Graphics g)
{
Graphics2D g2 =
(Graphics2D) g;
super.paintComponent(g);
Image img = new
ImageIcon(photourl).getImage();
g2.drawImage(img, 0, 0, this.getWidth(),
this.getHeight(), this);
}
}
但是我不用内部类的话。我直接定义一个panel然后如下
Graphics g
;
Graphics2D g2 = (Graphics2D) g;
panel.paintComponents(g2);
Image img
= new ImageIcon(photourl).getImage();
g2.drawImage(img, 0, 0,
panel.getWidth(), panel.getHeight(), panel);
可是总是提示 说g没有被初始化,但是
Graphics是不能实例化的啊!!! 纠结死了。。 展开
就可以在panel上画图
public class MyPanel extends
JPanel
{
public void paintComponent(Graphics g)
{
Graphics2D g2 =
(Graphics2D) g;
super.paintComponent(g);
Image img = new
ImageIcon(photourl).getImage();
g2.drawImage(img, 0, 0, this.getWidth(),
this.getHeight(), this);
}
}
但是我不用内部类的话。我直接定义一个panel然后如下
Graphics g
;
Graphics2D g2 = (Graphics2D) g;
panel.paintComponents(g2);
Image img
= new ImageIcon(photourl).getImage();
g2.drawImage(img, 0, 0,
panel.getWidth(), panel.getHeight(), panel);
可是总是提示 说g没有被初始化,但是
Graphics是不能实例化的啊!!! 纠结死了。。 展开
展开全部
一般来讲,Graphics是不需要你初始化的,不需要你new出来的,你绘制GUI组件时,有一个方法public void paint(Graphics g)你很多时候都会覆盖他,这个方法是别人调的,参数也是别人传的,你什么都不用管,你只要用这个参数进行绘制就行。
另外,比如你要操作一副图像,你有一个BufferedImage的对象image,你可以写Graphics g = image.createGraphics(),这样你就得到了Graphics对象,你还是不用管他是怎么创建出来的,你只要用就可以了
事实上,Graphics只是个抽象类,你在GUI组件绘制中真正拿到手的可能是一个sun.java2d.SunGraphics2D对象,所以从具体对象的创建到返回到你手中估计还是有一个相当复杂的过程的。。。
另外,比如你要操作一副图像,你有一个BufferedImage的对象image,你可以写Graphics g = image.createGraphics(),这样你就得到了Graphics对象,你还是不用管他是怎么创建出来的,你只要用就可以了
事实上,Graphics只是个抽象类,你在GUI组件绘制中真正拿到手的可能是一个sun.java2d.SunGraphics2D对象,所以从具体对象的创建到返回到你手中估计还是有一个相当复杂的过程的。。。
展开全部
你的 Graphics g 是什么时候初始化的
怎么初始化的
我估计,你是放到 paintComponent(g) 里去获取,或是,用的用的panel 里的createGraphics()去获取,这样是不行的,只有,界面还是show 里以后,才能有这个 Graphics的
所以,你要自己去初始化这个 Graphics
你要是用 panel 自己的Graphics ,需要你延迟,到界面出来以后,才能引用
怎么初始化的
我估计,你是放到 paintComponent(g) 里去获取,或是,用的用的panel 里的createGraphics()去获取,这样是不行的,只有,界面还是show 里以后,才能有这个 Graphics的
所以,你要自己去初始化这个 Graphics
你要是用 panel 自己的Graphics ,需要你延迟,到界面出来以后,才能引用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Graphics是不能实例化的。
JPanel的父类Component
有一个方法getGraphics()
可以得到。
JPanel的父类Component
有一个方法getGraphics()
可以得到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Graphics2D g = (Graphics2D) this.getGraphics();
这样能用么。普通画笔都是绑定在组件上的。2D画笔我不大清楚 。
这样能用么。普通画笔都是绑定在组件上的。2D画笔我不大清楚 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询