你用的是继承,重载了pain()后执行的是重载后的方法,父类中没有该方法

解决方案 »

  1.   

    重载父类JPanel的paint()方法时,通常将super.paint(g);放在子类paint()方法的第一句,你试试!
      

  2.   

    这样是可以了。可是我想在JPanel上加入一个LightWeight轻量级组件。该组件可显示一幅小图片。JPanel整个面板是一幅大图片,而且可以根据用户鼠标移动来改变面板图片内容。
    现在情况是这样:
    我从JPanel派生了一个类,并且重载了paint()方法,假如,我把super.paint(g)放到最前面或把这条语句去掉都不能显示我的LightWeight轻量级组件。如果我把super.paint(g)加入放到最后,轻量级组件显示出来了,可是整个面板的背景图片没有显示出来。以下是简单的程序:
    1:这种情况下只能显示smallImage,而myImage显示不出来
    public void paint(Graphics g) {g.drawImage(myImage, 0, 0, iImgWidth, iImgHeight, null);//画背景图片drawLightWeight(g, smallImage, p);//画轻量级组件上的图片super.paint(g);}//////////////////////
    2:这种情况下只能显示myImage,而smallImage显示不出来
    public void paint(Graphics g) {
    super.paint(g);//或者去掉g.drawImage(myImage, 0, 0, iImgWidth, iImgHeight, null);//画背景图片drawLightWeight(g, smallImage, p);//画轻量级组件上的图片
    }请问哪位大侠能帮帮我呀,谢谢啦!
      

  3.   

    public void paint(Graphics g) {
    super.paint(g);g.drawImage(myImage, 0, 0, iImgWidth, iImgHeight, null);//画背景图片drawLightWeight(g, smallImage, p);//画轻量级组件上的图片}先super!
      

  4.   


    g.drawImage(myImage, 0, 0, iImgWidth, iImgHeight, null);//画背景图片----null?
    drawLightWeight(g, smallImage, p);//?可能有误 原因,观察容器可能为null!
    画轻量级组件上的图片用
    smallImage.paintIcon(getContainer(), g, x, y);
      

  5.   

    我的轻量级组件是从Componment派生来的LightWeight类,里面重载了update()和paint()方法,构造函数是:LightWeight(Image image)
    以下是drawLightWeight函数:
      protected void drawLightWeight(Graphics g, LightWeight lw, Point p) {
        Dimension d = lw.getPreferredSize();
        lw.setBounds(p.x - d.width / 2, p.y - d.height / 2, d.width, d.height);
        lw.setVisible(true);
    }我已经把smallImage加入到JPanel里,即add(smallImage);
    但是为什么显示不出来,很郁闷呀,有虽能帮我呀?
      

  6.   

    “我从JPanel继承了一个类”……
    在继承的构造方法中用一下 setOpure(false);
    就是设置透明