当前位置: 首页 > 面试题库 >

如何使带有匿名内部类actionlistener的JButton在单击时自行删除?

史景铄
2023-03-14
问题内容

您好,感谢您提前阅读,这是我的问题:

final JButton button = new JButton();

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent actionevent)
            {
                button.setVisible(false);
                button.validate();
                button.invalidate();
                button.revalidate();
                button.repaint();
            }
        });

我已经尝试过所有这些操作,只是使该按钮消失了,我也禁用了它,但是我需要它只是消失,而不是淡出或其他东西。背景是variabel,所以我无法制作它,因此它和它具有相同的颜色,并假装它不存在。有谁有任何线索可以使它消失吗?

编辑 :我已经尝试了所有答案,非常感谢您,但是按钮仍然存在:(

EDIT2 :我想因为我的计时器而不断添加按钮,我犯了一个很大的错误,感谢所有帮助,这仍然非常有用!

EDIT3 :非常感谢大家,我已经在你们的帮助下解决了问题:)


问题答案:

如果要删除按钮:

Container parent = button.getParent();
parent.remove(button);
((JComponent) parent).revalidate();
parent.repaint();

如果要从按钮中删除动作监听器:

public void actionPerformed(ActionEvent actionevent)
{
  button.removeActionListener(this);
}


 类似资料:
  • 我的JButton ActionListener有问题。我在另一个类中定义了一个doTheCleaning()方法,当调用该方法时,会对GUI进行一系列更改。 然后,在另一个类中,我实例化了包含doTheCleaning()方法的类,并用jbutton的actionperformed()方法编写了ActionListener,如下所示: 我知道如何执行其他操作,比如addActionListene

  • 问题内容: 我的JButton ActionListener出现问题。我在另一个类中定义了doTheCleaning()方法,该类在调用时对我的GUI进行了一系列更改。 然后在另一个类中,我实例化了包含doTheCleaning()方法的类,并用我的actionperformed()方法为我的jbutton编写了ActionListener,如下所示: 我知道如何做剩下的事情,例如addActio

  • 问题内容: Java中匿名类的用途是什么?我们可以说使用匿名类是Java的优势之一吗? 问题答案: 使用某些“额外”(例如覆盖方法)创建对象的实例时,匿名内部类会变得很有用,而不必实际继承一个类。 我倾向于将它用作附加事件侦听器的快捷方式: 使用此方法可以使编码更快一些,因为我不需要创建额外的类来实现我可以实例化一个匿名内部类而无需实际创建单独的类。 我仅将这种技术用于“快速而肮脏的”任务,在这些

  • 我在业余时间开发了一个小游戏,但我遇到了一个问题,我真的不明白它为什么会发生。 这是一段无法真正工作的代码。这是一个带有三个按钮的JFrame(我去掉了另外两个)。它应该是一个暂停菜单,当按下“p”键时是一个“弹出窗口”。它运行得很好,问题是 游戏面板。变量setPause(假); 这一行应该设置一个布尔值为false,然后继续我的游戏循环。但由于某些原因,它从未执行,布尔值保持为true。这个问

  • 下拉框使用CSS和超文本标记语言/JS设计,使用从JS添加的名为“is-open”的类。一旦出现在指定的超文本标记语言div中,它将激活CSS来显示子菜单。 然而,有一个小问题,即一旦单击下拉框将不会消失,除非单击相同的菜单项。(当单击菜单内容div之外时,类不会取消切换) 作为一项基本功能,一旦用户不仅单击菜单,而且单击页面上的任何位置,该菜单都需要消失。 我目前的javascript如下所示:

  • 问题内容: 我最近正在做一个编程任务,要求我们用代码实现由UML图指定的程序。在某一时刻,该图指定我必须创建一个匿名JButton,该JButton显示一个计数(从1开始)并在每次单击时递减。JButton及其ActionListener都必须是匿名的。 我想出了以下解决方案: 这将添加一个匿名JButton,然后添加另一个(内部)匿名ActionListener来处理事件并根据需要更新按钮的文本