title: Cannot invoke "this.firePropertyChange()" on JPanel reference
body: <p>Why can I not invoke <code>firePropertyChange()</code> on <code>this</code> reference?</p>
  
  <pre><code>    [javac] /home/thufir/NetBeansProjects/Legacy/src/legacy/gui/table/SelectTableFollowup.java:41: error: cannot find symbol
      [javac]                     this.firePropertyChange("client", null, i);
      [javac]                         ^
      [javac]   symbol: method firePropertyChange(String,&lt;null&gt;,int)
      [javac] Note: Some input files use unchecked or unsafe operations.
      [javac] Note: Recompile with -Xlint:unchecked for details.
      [javac] 1 error
      [javac] 1 warning
  
  BUILD FAILED
  /home/thufir/NetBeansProjects/Legacy/nbproject/build-impl.xml:923: The following error occurred while executing this line:
  /home/thufir/NetBeansProjects/Legacy/nbproject/build-impl.xml:263: Compile failed; see the compiler error output for details.
  
  Total time: 4 seconds
  thufir@dur:~/NetBeansProjects/Legacy$ 
  </code></pre>
  
  <p>This is my code:</p>
  
  <pre><code>package legacy.gui.table;
  
  import java.awt.BorderLayout;
  import java.util.logging.Logger;
  import javax.swing.JPanel;
  import legacy.database.Queries;
  
  public class SelectTableFollowup extends JPanel {
  
      private static final Logger log = Logger.getLogger(SelectTableFollowup.class.getName());
      private ClientsTable table;
      private Followup followup;
      private Select Select;
      private final Queries queries = new Queries();
  
      public SelectTableFollowup() {
          initComponents();
      }
  
      private void initComponents() {
          table = new ClientsTable();
          followup = new Followup();
          Select = new Select();
          setLayout(new BorderLayout());
          add(Select, BorderLayout.NORTH);
          add(table, BorderLayout.CENTER);
          add(followup, BorderLayout.SOUTH);
          followupButton();
          query();
          cannotFirePropertyChangeOnThisObj();
      }
  
      private void cannotFirePropertyChangeOnThisObj() {
          table.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
              @Override
              public void propertyChange(java.beans.PropertyChangeEvent evt) {
                  if ("client".equals(evt.getPropertyName())) {
                      String s = evt.getNewValue().toString();
                      int i = Integer.parseInt(s);
                      log.info("i is " + i);
                      this.firePropertyChange("client", null, i);
                  }
              }
  
          });
      }
  
      private void followupButton() {
          followup.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
              @Override
              public void propertyChange(java.beans.PropertyChangeEvent evt) {
                  if ("followup".equals(evt.getPropertyName())) {
                      try {
                          int id = table.getId();
                          queries.send(id);
                          table.updateModel();
                      } catch (ArrayIndexOutOfBoundsException obe) {
                          log.info(obe.toString());  //no big deal
                      }
                  }
              }
          });
      }
  
      private void query() {
          Select.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
              @Override
              public void propertyChange(java.beans.PropertyChangeEvent evt) {
                  if ("select".equals(evt.getPropertyName())) {
                      log.info(evt.getNewValue().toString());
                      table.select(evt.getNewValue().toString());
                  }
              }
          });
      }
  }
  </code></pre>
  
  <p>From Netbeans, I know that it's quite possible to invoke <code>this.firePropertyChange()</code>, for <code>JPanel</code>'s which NetBeans creates.</p>
  
  <p>How is the above class any different from a Netbeans generated class? Both extend the same base class.</p>
  
  <p>If I've misused any terminology, please do let me know.</p>