java 图像

来源:互联网 发布:购物系统 数据库建表 编辑:程序博客网 时间:2024/05/16 13:57

JAVA界面问题高手帮帮忙

悬赏分:30 - 解决时间:2010-1-20 20:37
我想让一张图片做为这个软件的背景图片,怎么做啊! 切换面板后图片仍然能显示出来 高手们帮帮忙吧! 
问题补充:
就是 图片要始终显示在主窗口中,我在一个窗口中放多个面板无论在哪个面板 主窗口的图片都要显示出来  谢谢
提问者: 我说没有 - 三级
 
 
 
 
 
 
 
最佳答案
只能教你怎样加载图像了,图像可以直接绘制到Frame或JFrame或者其他组件上面,下面是具体内容。加载图像的示例:import java.awt.*;import java.awt.event.*;import java.net.*;  //要使用URL类应需要包含java.net包。import java.awt.image.*; public class A extends Frame { Image im1,im2;  URL u1,u2; public A() {   setSize(333,333);  setVisible(true);} public void paint(Graphics g){  //使用java.awt.Toolkit类中的getImage主法来反回Image类型的对象该Image对象包含图片文件所在的地址。 //要注意文件地址的表示方式:可以使用"/"或"//"来表示文件地址的分隔符。 im1=Toolkit.getDefaultToolkit().getImage("e:/1.jpg");  //使用URL类的对象来设置图片文件的地址,注意URL会抛出异常因此语句应在try块中//注意使用URL类的对象表示文件地址的方式,表示本地文件的位置时应使用"file:/"的形式开头,后面再跟文件的地址。 try{u2=new URL("file:/e://2.jpg");}catch(Exception e){}  im2=Toolkit.getDefaultToolkit().getImage(u2);//调用Graphics类中的drawImage方法绘制图像。关键概念:Component类实现了ImageObserver接口,因此每个继承自Component类的组件都是一个图像观察者(ImageObserver)//注意,由im1反回的图片在位置(50,50)处显示,并把图像缩放在长100宽都为100的矩形内显示,其第三个参数图像观察者(ImageObserver)使用的是Frame类本身,因为该程序继承身Framd类,因此是this g.drawImage(im1, 50, 50,100,100, this);  g.drawImage(im2,170,170,100,100,this);   } public static void main(String args[]) {     A ma=new A();   }   }java.awt.image包中定义的三个接口(ImageProducer, ImageObserver, ImageConsumer):首先我们要知道的是,图像的加载与图像生产者(ImageProducer),图像观察者(ImageObserver),图像消费者(ImageConsumer)有关。这三个都是java.awt.image包中定义的三个接口。这三个接口的具体内容这里先作了解,我们只要知道这三个接口在加载图像时的作用就行了。图像生产者,图像观察者,图像消费者的作用:首先图像是由一个名叫图像生产者(ImageProducer)加载的,图像生产者的作用就是生产图像的位,并将他们传递给图像消费者(ImageConsumer)。图像消费者接收由图像生产者产生的位。当图像生产者加载图像时,图像观察者(ImageObserver)可以监视其进展情况。因为Component类实现了ImageObserver接口,因此AWT构件就是一类图像观察者,当它们发现图像被完全加载时,它们重绘制它们自身。所以调用drawImage()寄存器中的this构件作为观察者。当图像完全加载时,该构件被重绘制,paint()方法被调用,再次调用drawImage()方法来绘制图像中所有的位。图像在程序中的加载方式:1、首先应创建一个Image对象,但不能初始化(因为Image类是抽象的):比如Image img;2、使用一个能反回Image对象的方法,并把该方法反回的对象赋给Image创建的对象。该方法包含了欲显示的图片文件的路径(包括本地和网络路径)。在应用程序中应使用java.awt.Toolkit类中的getImage方法,因为在Component类中没有关于反回Image对象的方法,要注意Toolkit是一个抽象类。而对于Applet类,则可以直接使用Applet类中定义的getImage方法。3、然后使用Graphics类中的drawImage方法,将图片绘制到组件上。一般应重载paint方法。详细介绍图像在程序中加载方式的三个步骤:关键问题:指定图片的位置首先应明白的是,在java中文件位置的分隔符”/”被替换为”/”,如要使用”/”分隔符,那么就应这样使用”//”,即使用两个”/”符号。其次图片的地址有两种指定的方法,一种是使用String字符串形式,一种是使用URL对象的形式。我们先看第一种使用String字符串形式指定图片的地址:比如要指定在e盘下的名为1.jpg的图片,则形式为”e:/1.jpg”或”e://1.jpg”。使用java.net.URL对象指定图片的地址:要使用URL类需要包含java.net包,在使用java.net.URL对象指定图片的地址时可以使用URL类中的构造函数URL(String str)来指定图片的路径。其中参数str表示指定的路径,要注意的是这里的路径因为是一个网络路径,因此在指定本地文件的路径时,应以”file:/”的形式开头,比如要该问e盘的1.jpg文件,则形式为try{URL url=new URL(“file:/e:/1.jpg”)}catch(Exception e){},要注意,因为URL构造函数会抛出一个异常,因此应把该语句放在try块中。也可以使用”file:/e://1.jpg”的形式。对于网络文件的位置应以”heep://”的形式开头。关于URL中的其他构造方法和其他内容,这里不做探讨,URL类是java.net网络编程的内容。1、java.awt.Image类,注意Image第一个字母的大小写首先应注意的是Image类是一个抽象类,也就是说不能直接实例化Image类的对象。因此要使用Image对象就必须从某个方法反回一个Image的对象,该方法反回的Image对象包括了图片所在的路径(位置)。在Applet类中可以直接使用getImage方法,但在应用程序(也就是Frame类中)中应使用java.awt.Toolkit类中的getImage()方法,因为在Component类中没有关于反回Image对象的方法。2、java.awt.Toolkit类中的getImage方法:Toolkit类是一个抽象类,因此不能直接实例化Toolkit类的对象,在Toolkit类中有两个版本的getImage方法,即getImage(URL url);和getImage(String str);其中参数url和str都是指定所要显示的图片所在的位置。使用Toolkit类中的getImage方法的方式:Toolkit.getDefaultToolkit().getImage(“参数”);我们来解释一下原因,因为Toolkit是抽象类,因此要使用Toolkit中的getImage方法就需要靠其他方式。在Toolkit类中定义了一个静态方法其原型为:static Toolkit getDefaultToolkit()该方法反回一个Toolkit类型的对象,而且是静态对象,因此我们可以在程序中这样调用getImage方法:Toolkit.getDefaultToolkit().getImage(“参数”);3、Graphics类中的drawImage方法该方法有几个版本,常用的有如下两个:boolean drawImage(Image img, int x, int y, ImageObserver ob); 表示图像在坐标(x,y)处绘制,当图像已完全加载时反回trueboolean drawImage(Image, img, int x, int y, int w, int h, ImabgeObserver ob);表示图像在坐标(x,y)处绘制,且把图像的宽度和高度缩放到w和h的大小。当图像已完全加载时反回true以上方法的最后一个参数是ImageObserver(图像观察者)类型的对象,前面我们已讲过,每一个AWT组件都是图像观察者,因为Component实现了该接口,因此可以把组件自已作为该参数。 
原创粉丝点击