JAVA的GUI问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 16:11:43
**
* @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,

首先,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 {
<