| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:[求助]JAPPLET下替换图像问题
只看楼主 加入收藏
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
 问题点数:0 回复次数:5 
[求助]JAPPLET下替换图像问题

import java.awt.*; import java.awt.event.*; import javax.swing.JApplet; import javax.swing.*;

public class Img extends JApplet implements ActionListener { canvas can; JTextField t = new JTextField(20); JButton b = new JButton("替换"); JPanel p1 = new JPanel(new GridLayout(1,1)); JPanel p2 = new JPanel(); Image img; String imgname = "43906.gif"; public void init() { p2.add(t); p2.add(b); img = getImage(getCodeBase(),imgname); can = new canvas(img); p1.setBorder(BorderFactory.createTitledBorder("图像")); p1.add(can); getContentPane().add(p1,"Center"); getContentPane().add(p2,"South"); b.addActionListener(this); } public void actionPerformed(ActionEvent a) { imgname = t.getText(); img = getImage(getCodeBase(),imgname); can = new canvas(img); repaint(); } } class canvas extends Canvas { Image img; int w,h; public canvas(Image img) { this.img = img; } public void paint(Graphics g) { w = img.getWidth(this); h = img.getHeight(this); g.drawImage(img,10,10,w,h,this); } } 在class目录下有几个图片,第一次显示没有问题,但下次替换为何就不行呢……

搜索更多相关主题的帖子: JAPPLET 图像 
2005-09-07 09:19
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
应该是IE给你缓存了,所以没有替换吧?

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2005-09-07 18:12
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
但我用JFrame也不能正常显示啊,应该不是IE缓存的问题吧……

向着软件工程师的目标前进!
2005-09-07 21:40
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
///////////////////////////////////
//
//       try it  -:)
//
///////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.JApplet;
import javax.swing.*;

public class Img extends JApplet implements ActionListener
{
  canvas can;
  JTextField t = new JTextField(20);
  JButton b = new JButton("替换");
  JPanel p1 = new JPanel(new GridLayout(1,1));
  JPanel p2 = new JPanel();
  Image img;
  String imgname = "cat.gif";
  public void init()
  {
    p2.add(t);  p2.add(b);
    img = getImage(getCodeBase(),imgname);
    can = new canvas(img);
    p1.setBorder(BorderFactory.createTitledBorder("图像"));
    p1.add(can);
    getContentPane().add(p1,"Center");
    getContentPane().add(p2,"South");
    b.addActionListener(this);
  }
  
  public void update()
  {
    imgname = t.getText();
    img = getImage(getCodeBase(),imgname);
    can.setImg(img);
    can.repaint();
  }
  public void actionPerformed(ActionEvent a)
  {
    update();
  }
}

class canvas extends Canvas
{
  Image img;
  int w,h;
  public canvas(Image img)
  {
    this.img = img;
  }
  public void setImg(Image img)
  {
    this.img = img;
  }
  public void paint(Graphics g)
  {
    w = img.getWidth(this);
    h = img.getHeight(this);
    g.drawImage(img,10,10,w,h,this);
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-07 22:14
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
谢谢~~~
问个问题,为什么一定要定义一个方法来传递呢,用构造函数传递就不行啊……
曾经把update方法写在Canvas类里面,致使图像无法显示……呵呵

向着软件工程师的目标前进!
2005-09-07 22:48
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
用构造函数传递也可以,我个人认为没这个必要。
下面是用构造函数实现的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JApplet;
import javax.swing.*;

public class Img extends JApplet implements ActionListener
{
  canvas can;
  JTextField t = new JTextField(20);
  JButton b = new JButton("替换");
  JPanel p1 = new JPanel(new GridLayout(1,1));
  JPanel p2 = new JPanel();
  Image img;
  String imgname = "cat.gif";
  public void init()
  {
    p2.add(t);  p2.add(b);
    img = getImage(getCodeBase(),imgname);
    can = new canvas(img);
    p1.setBorder(BorderFactory.createTitledBorder("图像"));
    p1.add(can);
    getContentPane().add(p1,"Center");
    getContentPane().add(p2,"South");
    b.addActionListener(this);
  }
  
  public void update()
  {
    imgname = t.getText();
    img = getImage(getCodeBase(),imgname);
    p1.remove(can);
    can = new canvas(img);
    p1.add(can);
    p1.updateUI();
    can.repaint();
  }
  
  public void actionPerformed(ActionEvent a)
  {
    update();
  }
}

class canvas extends Canvas
{
  Image img;
  int w,h;
  public canvas(Image img)
  {
    this.img = img;
  }
  public void setImg(Image img)
  {
    this.img = img;
  }
  public void paint(Graphics g)
  {
    w = img.getWidth(this);
    h = img.getHeight(this);
    g.drawImage(img,10,10,w,h,this);
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-07 23:19
快速回复:[求助]JAPPLET下替换图像问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032238 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved