Java 如何创建接受图像作为参数的自定义JButton?

Java 如何创建接受图像作为参数的自定义JButton?,java,swing,oop,jbutton,paintcomponent,Java,Swing,Oop,Jbutton,Paintcomponent,我试图通过扩展JButton类来创建自己定制的Swing button类,该类的构造函数将接受字符串、图像和图标作为参数,并将构造一个包含所有这些参数的按钮。 通过下面的代码,我得到了背景图像实际上与图标和文本重叠的输出。如何克服这个问题 public class CustomizedButton extends JButton{ Image i; Dimension d; public CustomizedButton(String str, ImageIco

我试图通过扩展
JButton
类来创建自己定制的Swing button类,该类的构造函数将接受字符串、图像和图标作为参数,并将构造一个包含所有这些参数的按钮。 通过下面的代码,我得到了背景图像实际上与图标和文本重叠的输出。如何克服这个问题

 public class CustomizedButton extends JButton{

     Image i;
     Dimension d;
     public CustomizedButton(String str, ImageIcon icon,Image img) {


     d = new Dimension(1000,500);
     this.setForeground(Color.red);
     this.setText(str);
     this.setIcon(icon);
     this.i = img;  
     this.setPreferredSize(d);

     }

   @Override
   public void paintComponent(Graphics g){
          super.paintComponent(g);
     g.drawImage(i, 0, 0, null);

   }

 }

为什么按钮既有
图像
又有
图像图标
?顺便说一句-如果覆盖
paintComponent(图形g)
代码应立即调用
super.paintComponent(g)
。。此外,你能更具体地说明你需要的指导类型吗?@AndrewThompson,我的想法是图像将作为背景,图标和文本将覆盖在这个定制按钮的背景图像上。好的。。我还不清楚你真正的问题是什么。因为如果是“有人能给我指点指点吗?”这个问题就可以用以下任何一个理由来结束。@AndrewThompson简单地说。。我想画一个带有图像的按钮。除了扩展AbstractButton类,还有其他方法吗?删除这个.setUI(新的JButton().getUI());要覆盖getPreferredSize,请在paintComponent中使用这些坐标(getHeight/Wieght)