0

我知道我的方法不实用,但这将帮助我更多地习惯 Java。我正在尝试创建一个 JButton 子类(名为 MyButton)。MyButton 基本上会创建一个带有自定义图像背景的新 Gui 按钮。我知道如何在类中创建一个新按钮,但不知道如何引用 MyButton 类创建的按钮。如代码所示,需要设置按钮的图标,但这需要在子类内部完成,所以说用过的不必用它。在创建时,编码器输入引用纹理的字符串,然后 MyButton 具有 JButton 的所有属性,但也已经设置了图像。下面是我的源代码。

package Classes;
import javax.swing.ImageIcon;
import javax.swing.JButton;

public class MyButton extends JButton{
private static final long serialVersionUID = 1L;

public JButton abc = new JButton();
private ImageIcon def;
private MyButton ghi;

public MyButton(String image){

    def = new ImageIcon(getClass().getResource(image));

    //abc.setIcon(def);
    //abc.setPressedIcon(def);

    ghi = new MyButton("image.png");
    ghi.setIcon(def);


}
}

UPADTE 解决了。谢谢山姆。我相信“this.setIcon”有效

4

3 回答 3

2

也许我误解了你,但MyButton不(或可能不应该)创建一个按钮,它按钮。(从技术上讲,它是一种按钮。)方法public MyButton...MyButton类的构造方法;它初始化一个新的 MyButton。关键字将this引用MyButton类中的按钮;在它之外,您将使用如下所示的代码:

MyButton aButton = new MyButton();
于 2013-04-12T22:42:36.647 回答
0

如果您扩展 JButton,那么您将得到一个新对象,它是一个按钮。
原始的 JButton 有一个 draw 方法,它将按钮绘制到画布上。

我认为您应该像这样覆盖按钮的 paintComponent() 方法:

@Override
public void paintComponent(Graphics g) {
    // g.drawImage(image) or something...
}

//  Also has a paintBorder() method
public void paintBorder(Graphics g) {
   // Draw your border if mouse over
}

所以你可以绘制你的初始化图像文件。该按钮将像普通的 JButton 一样工作,但构造函数将采用图像 url。(你已经这样做了)。

于 2013-04-12T22:51:56.123 回答
0
public class MyButton extends JButton{
private static final long serialVersionUID = 1L;
private ImageIcon def;
private MyButton ghi;

public MyButton(){
def = new ImageIcon("image.png");
super(def);
}
}

上述课程中的一些东西。

于 2013-04-12T22:49:16.537 回答