我试图创建一个更整洁的Jframe程序,所以我决定创建一个CustomButton类,所以我不必写出主程序上的所有按钮设置,但参数不在自定义类中更改。
这就是我在主类中创建按钮的方式:
CustomButton button = new CustomButton("Hello World",2,20,5,5);
button.addActionListener(this);
button.setActionCommand("id:1");
add(button);
CustomButton类:
package com.ezranestel.classes;
import javax.swing.JButton;
public class CustomButton extends JButton{
private static final long serialVersionUID = 1L;
public String buttonID;
public CustomButton(String buttonText,int sizeX, int sizeY,int locationX, int locationY) {
JButton button = new JButton();
button.setName(buttonText);
button.setSize(sizeX, sizeY);
button.setLocation(locationX, locationY);
System.out.println("Creating a button"+buttonText);
}
}
运行时,控制台表示它正在创建按钮(System.out),但它已创建且尺寸没有改变,也没有名称。
答案 0 :(得分:1)
你的问题是你的CustomButton类没有扩展任何东西,它只是一个按钮,并没有对它做任何事情。这是您的课程应该有效的版本。
public class CustomButton extends JButton{
public CustomButton(String buttonText,int sizeX, int sizeY,int locationX, int locationY) {
super(buttonText);
this.setSize(sizeX, sizeY);
this.setLocation(locationX, locationY);
}
}
请参阅顶部如何扩展JButton类?这使它成为JButton的一个版本并创建一个有效的按钮来处理。你设置它的方式是,你创建一个JButton而不用它做任何事情,完全独立于你的CustomButton,所以当你向框架中添加一个CustomButton时,JVM没有关于要添加什么的信息。