如何从NETBEANS中的jButton生成的代码中删除actionlistener

时间:2019-04-29 13:07:19

标签: java netbeans

我正在尝试使用netbeans制作TIC TAC TOE游戏,当我完成设计Jframe netbeans自动为我的jButtons生成代码时,我真的对JAVA真的很陌生,问题是netbeans为我生成的所有代码都是无法编辑的,我很难理解

该按钮适用于X O,您可以在其中单击它,然后出现X O文本,并且我希望在单击一次后将其禁用

jButton.setEnabled(false); 

但是它使我的按钮变灰,所以我不使用它,因为我希望我的按钮具有颜色

我尝试过

jButton.removeActionlistener(this);

相反,但它不起作用,我不知道该怎么办,因为我不了解它们为我生成的代码

这是他们提供给我的代码,我无法编辑 按钮太多了,所以代码也很多,所以我只想在此举例说明netbeans的功能我

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {


    jButton1 = new javax.swing.JButton();


    jButton1.setBackground(new java.awt.Color(204, 204, 204));
    jButton1.setFont(new java.awt.Font("Tahoma", 1, 96)); // NOI18N
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //my code here
} 
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
}                                       

我希望我用完

jButton.removeActionlistener(this);

在方法中 它不允许我在第一次单击后单击按钮,并且按钮没有变灰,但是什么也没发生,请帮帮我

提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

netbeans为我的jButton自动生成的代码问题是netbeans为我生成的所有代码都是不可编辑的

保护代码是有原因的。您应该通过浏览GUI设计器的属性来更改该代码。例如。如果要删除事件的代码,则应在组件属性表的“事件”选项卡中执行以下操作:

enter image description here

如果在对话框中单击Remove,则事件处理程序将从代码中完全删除。您可以通过简单地删除可编辑文本字段(显示方法名称的地方)中的文本来实现相同的目的。

  

但是它使我的按钮变灰了

这是由外观和感觉驱动的。禁用组件的呈现方式与启用组件的呈现方式不同。

  

我尝试了jButton.removeActionlistener(this);

那是行不通的,因为NetBeans使用匿名内部类来注册ActionListener,如您在initComponents()方法中看到的那样。

如果要动态添加和删除ActionListener,则需要告诉GUI设计器使用主类作为侦听器。可以在工具→选项→Java→GUI Builder下完成:

enter image description here

但是,一旦您进行了更改,就需要重新生成事件处理程序。您需要删除并重新添加它以应用新一代样式。

我通常创建自己的方法来处理事件,并仅从(生成的)事件处理程序中调用它们:

enter image description here

如您所见,事件处理程序中的代码只是分派给另一个方法。这样做的好处是,即使您通过GUI设计器删除了事件处理程序,也不会丢失已经编写的代码。


NetBeans的GUI设计器是一个非常强大的工具,但是它并没有消除理解底层Swing框架和Java概念的需要。与所有强大的工具一样,它需要一些时间来理解它。

您应该阅读NetBeans homepage上的GUI设计器教程。

您可能要从以下两个开始。

我没有看过它们(因为我更喜欢文本而不是视频),但是您可能还想查看NetBeans' YouTube频道,看看其中是否包含GUI设计器的任何教程。

答案 1 :(得分:0)

jButton.removeActionlistener(this);

甚至编译?

您可以像这样从按钮中删除所有侦听器:

    for (ActionListener listener : jButton1.getActionListeners())
    {
        jButton1.removeActionListener(listener);
    }

或者,您可以跟踪状态,而不是弄乱侦听器,例如以下伪代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if (buttonAlreadyClicked)
        // do nothing or play a sound or tell the user somehow else that this button was already clicked
    else
        changeToXorO
        buttonAlreadyClicked = true
}