title: Cannot refer to a non-final variable
body: <p>I'm trying to create simple GUI program in Java and I couldn't find a proper solution to error cannot refer to a non-final variable inside an inner class defined in a different method.</p>
  
  <p>Here's my small code so far;</p>
  
  <pre><code>myPanel = new JPanel();
  
  JButton myButton = new JButton("create buttons");
  myButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
          int val = Integer.parseInt(textfield.getText());
          for(int i = 0; i &lt; val; i++) {
              JButton button = new JButton("");
              button.setText(String.valueOf(i));
              button.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      clickButton(i);
                  }
              });
              myPanel.add(button);
              myPanel.revalidate();
          }
      }
  });
  </code></pre>
  
  <p>Maybe my approach is completely wrong. What I'm trying to do is; I want to create a set of buttons and say when the user presses a button I want to display a message like "you pressed the button 4", or "you pressed the button 10".</p>