**
* @author YQH
* @version 06-09-28
*/
import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;
import java.net.URL;
public class Photo3 extends JFrame {
public Photo3(){
super("看图"); //设置标题
Canvas canvas=new Canvas(); //设置画板,为以下的代码用于显示图片
Container c=getContentPane(); //得到当前的框架的内容面板
JPanel jp1=new JPanel();
JMenu jm=new JMenu("菜单"); //菜单项目,用于放置菜单
JMenuItem jmt=new JMenuItem("选择文件"); //菜单子项
Image image;
Graphics g=canvas.getGraphics();
try{
image=Toolkit.getDefaultToolkit().createImage(
new URL("E:\\壁画\\生 活\\聪仔\\06-08-15\\DSC00074.JPG"));
g.drawImage(image,0,0,null);
}catch(Exception e){}
c.setLayout(new BorderLayout());
c.add(canvas,BorderLayout.CENTER);
setSize(400,300);
setVisible(true);
}
public static void main(String args[]){
new Photo3();
}
}
这是我写的程序,但是没有图片显示,我的目的就是显示图片。请高手帮忙解决
參考答案:首先,image=Toolkit.getDefaultToolkit().createImage(
new URL("E:\\壁画\\生 活\\聪仔\\06-08-15\\DSC00074.JPG"));
应该改为:
image=Toolkit.getDefaultToolkit().createImage(
new URL("file://localhost/G:/p.gif"));URL需要特定的协议,这里是file,可以是http,ftp等
然后,Canvas类的getGraphics()方法只会返回null,你的catch(Exception e){}应该加上e.printStackTrace(),否则你永远不知道哪出错了.
doc上说得明白,"应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。"
以下是更改的程序,希望能运行:
import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;
import java.net.URL;
class MyCanvas extends Canvas{
private Image img;
public void paintPicture(Image img){
this.img=img;
this.repaint();
}
public void paint(Graphics g){
g.drawImage(img,0,0,this);
}
}
public class Photo3 extends JFrame {
public Photo3(){
super("看图"); //设置标题
MyCanvas canvas=new MyCanvas(); //设置画板,为以下的代码用于显示图片
Container c=getContentPane(); //得到当前的框架的内容面板
JPanel jp1=new JPanel();
JMenu jm=new JMenu("菜单"); //菜单项目,用于放置菜单
JMenuItem jmt=new JMenuItem("选择文件"); //菜单子项
Image image;
try{
image=Toolkit.getDefaultToolkit().createImage(
new URL("file://localhost/E:\\壁画\\生 活\\聪仔\\06-08-15\\DSC00074.JPG"));
canvas.paintPicture(image);
}catch(Exception e){
e.printStackTrace();
}
c.setLayout(new BorderLayout());
c.add(canvas,BorderLayout.CENTER);
setSize(400,300);
setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main(String args[]){
new Photo3();
}
}