【发布时间】:2020-09-22 20:35:03
【问题描述】:
首先,我只在这几天,所以如果这是一个愚蠢的问题,我很抱歉,我进行了搜索,但没有找到我要找的东西。
简单地说,我有一个这样的课程:
public class logout extends JButton {
private static final long serialVersionUID = -4813329911065574369L;
public static JButton logout = new JButton("Izloguj se");
public logout()
{
//parameters like font, foreground etc
}
当我尝试在另一个类中调用它时,像这样:
ctrl.add(prikaz.logout.logout);
我得到一个旧的普通按钮,上面有我在课堂上定义的文本,但没有我为它定义的参数。
我知道如果我执行以下操作,我可以添加按钮及其设置:
JPanel lgtBtn = new logout();
但我想直接用 add 来做。
【问题讨论】:
-
但我想直接用 add 来做 - 那样不行。如果要更改对象的属性,则需要创建该对象的实例,然后设置属性。您在此处发布的代码完全错误,不应使用。不需要类来扩展 JButton。
-
您正在创建 两个 JButton,其中一个是注销对象本身,它没有任何属性更改但会显示,而其他 logout 类中的 logout 字段,其属性确实已更改,但从未更改。不要这样做。按照@camickr 的建议做,不要扩展 JButton,而是创建 JButton 并根据需要设置它们的属性。仅当您要更改对象的固有行为(覆盖其方法之一)时才进行扩展。
-
另外,你不应该给一个与类本身同名的字段,因为这只会混淆,你应该学习并遵循 Java 命名约定:类名以大写字母开头总是。
-
也许你想要做的是创建一个
Factory。工厂允许您调用静态方法,该方法将返回对象的实例。然后 factor 方法可以自定义组件的属性。在网上搜索“工厂模式”。 -
谢谢你们的cmets和建议,我会好好对待他们,照你说的做。工厂似乎确实是我的想法,我会花时间了解它。谢谢!