【问题标题】:how to check if two jbuttons are the same (java) [duplicate]如何检查两个jbuttons是否相同(java)[重复]
【发布时间】:2016-04-11 06:29:48
【问题描述】:

有没有办法检查我们通过单击 (mouseClicked) 获得的按钮是否与按钮数组中存在的按钮相同? (==) 和 equals() 我都使用过,但都不起作用。

我是java新手,请记住这一点。

【问题讨论】:

  • 考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将减少混乱并获得更好的响应
  • I've used both (==) and equals() but neither works. - 那么我会说你的代码是错误的,因为两者都应该工作。发布演示问题的演示。
  • 您在处理按钮时应该使用ActionListener,而不是MouseListener,但话虽如此,您可能认为您引用的是(按钮数组)以及上面的内容屏幕不是一回事
  • 但是为什么会这样呢?
  • 因为您的代码中存在一些问题。我们无法在没有看到的情况下告诉您更多信息。

标签: java swing jbutton mouseclick-event


【解决方案1】:

==equals()有不同的功能:

==

如果对象的两个引用指向同一个对象,== 变为真,如下所示:

Object a = new Object();
Object b = a;
System.out.println(a == b);
// prints true because a referres to the same onject as b

等于()

equals() 如果对象相等,则返回 true,这意味着不一定是相同的对象。相反,它会检查所有字段/属性是否相等。它的实现取决于类。

【讨论】:

    【解决方案2】:

    应该使用ActionListener 而不是MouseListener 来处理按钮点击。当您这样做时,您可以通过这种方式访问​​点击源:

    ActionListener al = e -> {
         JButton button = (JButton) e.getSource();
         //search your array here
    };
    button.addActionListener(al);
    

    然后只需通过您的数组并比较 == 运算符的引用。另外我建议使用Collection 而不是数组并使用Collection.contains(T t) 方法。

    【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2017-09-09
    • 2013-04-16
    • 2023-03-13
    • 2011-06-22
    • 2014-06-11
    相关资源
    最近更新 更多