Help with ActionListener please
Hey guys, I need help.
I have three classes (Main, Table and ActionListenerWin). I'm using the actionListener in "ActionListenerWin" to call the "Table" class when a button is clicked. Can anybody tell me what I'm doing wrong?
Code :
table.addActionListener(new Action1()); // This line is somewhere in the code
// Then
static class Action1 implements ActionListener{
Table object1 = new Table();
public void actionPerformed(ActionEvent e) {
object1.setup();
object1.draw();
}
}
Can anybody help me out? I've tried different things but none of them have worked, Do I have to do anything in the main class to make it work? With the code abode I'm getting this nasty error:
Code :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at processing.core.PApplet.size(Unknown Source)
at processing.core.PApplet.size(Unknown Source)
at projectII.Table.setup(Table.java:23)
at projectII.ActionListenerWin$Action1.actionPerformed(ActionListenerWin.java:108)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
I'd be very thankful if you can do anything for me.
Re: Help with ActionListener please
Quote:
at projectII.Table.setup(Table.java:23)
Is Table.java your source?
The error message trace shows the error was at line 23 in your program. What code is at that line?
Is there a variable used on that line that is null?
Re: Help with ActionListener please
Hi Norm, thanks for answering.
Now that you talk about that line I think I understand where the problem comes from, I don’t know how to fix it though. I'm writing the code in NetBeans but actually I'm using "Processing" libraries. It is basically a project where there's a lot of graphics involved and Processing is the perfect tool for that.
I'm not "really" a programmer, I'm just learning. One of the things I noticed while interfacing Processing with NetBeans was the way the classes are called in the main method:
Code :
package projectII;
import processing.core.*;
import processing.serial.*;
import processing.opengl.*;
import javax.media.opengl.*;
public class Main extends PApplet{
public static void main(String[] args) {
ActionListenerWin objectJava = new ActionListenerWin();
//PApplet.main( new String[]{"projectII.Table"} );
//PApplet.main( new String[]{"projectII.RealTime1"} );
// PApplet.main( new String[]{"projectII.RealTime2"} );
}
}
I commented the lines because what I'm trying to do is open and close those three classes using buttons, I’m also using inheritance as you can see. Does this change the way classes are called in my actionlistener body?
The line with the error you mentioned in the beginning is:
size(1200,500); // This is something coming from Processing.
I created one more class just to make sure the problem was coming from the Processing classes:
Code :
package projectII;
public class NewClass {
public void hello(){
System.out.println("Hello");
}
}
Then in my actionlistener in my class ActionListenWin:
Code :
static class Action1 implements ActionListener{
NewClass object = new NewClass();
public void actionPerformed(ActionEvent e) {
object.hello();
}
}
And the program ran smoothly, I guess my problem is about how the way I should create the instance of those classes that use Processing libraries???
Thanks in advance for helping.
Re: Help with ActionListener please
Quote:
problem is about how the way I should create the instance of those classes that use Processing libraries
To answer that you need to think about:
Where the classes used.
When do you have the arguments needed to create the classes.
Not much I can suggest not knowing what the code is doing and how the parts go together.