【问题标题】:Adding the button from another class but none of parameters goes trough just a plain button从另一个类添加按钮,但没有任何参数通过一个普通按钮
【发布时间】: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和建议,我会好好对待他们,照你说的做。工厂似乎确实是我的想法,我会花时间了解它。谢谢!

标签: java swing class jbutton


【解决方案1】:

您定义logout 按钮:

public static JButton logout = new JButton("Izloguj se");

这将创建一个带有指定文本的新JButton。但是你所在的类扩展了JButton,它是在构造函数中设置的。所以你有两个JButtons,但你只引用了一个没有设置的。我只想摆脱上面的代码行,并将按钮引用为prikaz.logout(而不是prikaz.logout.logout)。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2023-03-23
    • 2020-10-11
    • 2020-08-01
    相关资源
    最近更新 更多