Java中的自定义按钮类

时间:2013-04-12 22:38:18

标签: java swing jbutton

我知道我的方法不实用,但这会帮助我更多地习惯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”的作用

3 个答案:

答案 0 :(得分:2)

也许我误解了你,但是MyButton没有(或者可能不应该)创建一个按钮,按钮。 (从技术上讲,它是一种按钮。)方法public MyButton...MyButton类的构造方法;它初始化一个新的MyButton。 this关键字将引用MyButton类中的按钮;除此之外,你将使用看起来像这样的代码:

MyButton aButton = new MyButton();

答案 1 :(得分: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);
}
}

上述课程中的内容。

答案 2 :(得分: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。 (你这样做了)。