我知道我的方法不实用,但这会帮助我更多地习惯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”的作用
答案 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。 (你这样做了)。