近日做一个小程序
遇到以下几个问题1:
Jpanel上更换图片:
首先我重写paintComponent方法设置了panel的背景图片
我想另起一个线程每隔一段时间对panel的背景图片进行更换,要如何做呢??protected void paintComponent(final Graphics g) {
  super.paintComponent(g);
  g.drawImage(image,0,0,getWidth(),getHeight(),null); 
  
  //每隔一段时间,重绘背景
  skinThread thread = new skinThread(this,g,getWidth(),getHeight());
  thread.start();
  
}这是我的一个方法,创建一个线程,并传入了panel,g,以及相关参数
然后,我在run方法中调用g.drawImage(image2,0,0,width,height,null); 我觉得不大对……因为没效果2:
通过事件获取其所在的Frame比如我点击一个Jframe上的button,在另一个监听类中如果通过e获取button所在的Frame对象呢???
望各位高手解答!!!!!

解决方案 »

  1.   

    1
    public ImagePanel extends JPanel{
    private Image image;
    public ImagePanel(){ ... }
    public void setImage(String imageFile){
    image = ImageIO.read(imageFile);
    repaint();
    }
    public void paintComponent(Graphics g){
    ...
    g.drawImage(...);
    }
    }ImagePanel imagePanel = new ImagePanel(...);
    Timer timer = new java.util.Timer(true);
    timer.schedule(new TimerTask(){
    public void run(){
    imagePanel.setImage(...);
    }
    },
    delay,
    period);
    2
    getParent
    public Container getParent()获取此组件的父级。 返回:
    此组件的父级容器
    从以下版本开始: 
    JDK1.0 e.getSource().getParent()
      

  2.   

    太谢谢了……第二个问题后来我查API文档也弄明白了,不过第一个问题我一直没搞定,实在是太感谢了,我怎么就没想到用Timer呢,呵呵