请问为什么我无法将一幅图片绘到一个按纽上去?请大师帮我分析一下。//ImageTest.java
import javax.swing.*;
import java.awt.*;
public class ImageTest extends JFrame {
    
    /** Creates a new instance of Main */
    public ImageTest() {
        super("ImageTest");
        setSize(new Dimension(50,50));
//      setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MyButton button1=new MyButton("D:\\java\\ImageTest\\btn.gif");
        getContentPane().add(button1);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        ImageTest imgtest=new ImageTest();
        imgtest.show();
    }
    
}
//MyButton.java
import javax.swing.*;
import java.awt.*;
public class MyButton extends JButton{
    
    /** Creates a new instance of MyButton */
    private Image img=null;
    private Toolkit toolkit=Toolkit.getDefaultToolkit();
    public MyButton()
    {
    }
    public MyButton(String str) {
        img=toolkit.getImage(str);
    }
    public void paintComponent(Graphics comp)
    {
        Graphics2D comp2D=(Graphics2D)comp;
        comp2D.drawImage(img,0,0,this);
    }
    
}

解决方案 »

  1.   

    MyButton button1=new MyButton("D:\\java\\ImageTest\\btn.gif");
    把这句里的MyButton换成JButton.
      

  2.   

    public void paintComponent(Graphics comp)
        {
            Graphics2D comp2D=(Graphics2D)comp;
            comp2D.drawImage(img,0,0,this);
        }
    这个方法根本没运行,你自己在想想看。。何不用JButton(Icon icon)直接创建
      

  3.   

    public void paintComponent(Graphics comp)
        {
            Graphics2D comp2D=(Graphics2D)comp;
            comp2D.drawImage(img,0,0,this);
        }
    应该先调用父类的同名函数
    super.paintComponents( g );
      

  4.   

    import javax.swing.*;
    import java.awt.*;class MyButton extends JButton
    {
    private String imgPath;
    public MyButton( String imgPath )
    {
    this.imgPath = imgPath;
    }
    public void paintComponent( Graphics g )
    {
    super.paintComponents( g );

    ImageIcon icon = new ImageIcon( imgPath );
    Insets insets = this.getInsets();
    icon.paintIcon( this , g , insets.left , insets.top );
    }


    public static void main( String[] args )
    {
    JFrame f = new JFrame();
    MyButton myButton = new MyButton( "C:\\WINNT\\Web\\exclam.gif" );
    f.getContentPane().add( myButton );
    f.setSize( 320 , 240 );
    f.setVisible( true );
    }
    }