My question is specific to Eclipse and the Swing WindowBuilder plugin.
To make simple Swing apps I normally create a class and extend a JFrame. I make my Swing components private class variables. This allows me to add an Actionlisteners and access the swing components in actionPerformed(), like this:
public class MyClass() extends JFrame implements ActionListener {
     private JButton btnClickMe = new JButton("Click me");
 
     public MyClass() {
         super("title");
         this.setLayout(null);
         btnClickMe.setBounds(1,1,100,100);
         this.add(btnClickMe);
         btnClickMe.addActionListener(this);
         this.setVisible(true);
     }
 
     public void actionPerformed(ActionEvent event) {
         Object source = event.getSource();
         if(source == btnClickMe) { // do something }
     }
 
     public static void main(String[] args) {
         new MyClass();
     }
 }
 By default the WindowBuilder plugin create Swing component variables I guess in what would be considered the constructor (public MyClass()), rather than private class variables. As a result due to scope I am not able to use ActionListeners the way I am used to since the Swing variables are not visible to actionPerformed().
Can anyone advise how this can be overcome?
 
No comments:
Post a Comment