请问为什么我无法将一幅图片绘到一个按纽上去?请大师帮我分析一下。//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);
}
}
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);
}
}
把这句里的MyButton换成JButton.
{
Graphics2D comp2D=(Graphics2D)comp;
comp2D.drawImage(img,0,0,this);
}
这个方法根本没运行,你自己在想想看。。何不用JButton(Icon icon)直接创建
{
Graphics2D comp2D=(Graphics2D)comp;
comp2D.drawImage(img,0,0,this);
}
应该先调用父类的同名函数
super.paintComponents( g );
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 );
}
}