Would anyone on the list be willing to look through my code (multiple files) and help me where I am having errors? It should be a simple newbie error, easy for you guys to spot.

This is the situation. I am building an app to learn from, and am combining Ivor Horton's Beginning Java 2 (1.4 Edition) and the SVG Example from the Batik website. My end goal is an open source wargame, just something I have always wanted to do, combined with the learning to program goal I have.

The application has multiple classes.
OpenWarSim        main class
AppMainFrame      the actual application frame
MapView           class that loads an SVG file that works in the SVG viewer
StatusBar         bottom bar that gives feedback and data
( a few other supporting files )

The OpenWarSim file is the main class that when launched, fires a splashscreen class (now commented out for speed) and the AppMainFrame. AppMainFrame consists of a menu bar (two things working: Game > Load Map, Game > Exit and Close) a JPanel and a Status Bar that gives feedback.

Now, the StatusBar class works. I have successfully pumped the SVG listener events to give output to this bar. However, the process stops at addGVTTreeBuilderListener which is what started my problems. addGVTTreeRendererListener never fires. As a note, the Batik .jars are included fine, and when I build SVGTestExample.java (the Batik example from the site) in this same package as a standalone class, it builds fine. It was this that I used to troubleshoot any svg errors in my file. :)

I suspect that this is a simple problem with how I have constructed things. Inside the JScrollPane in the AppMainFrame center, I am trying to create the JSVGCanvas.

//  Begin AppMainFrame class code...

// TODO - This is where we are seemingly failing. The MapView JScrollPane is not
// being created at all. JScrollPane panel = new JScrollPane();
// Set up the main window data.
panel.setPreferredSize(new java.awt.Dimension(mapWidth, mapHeight));
// The main map, displaying elements, routes and objectives.
panel.setToolTipText("Situation and Update Map");
JSVGCanvas svgCanvas = new JSVGCanvas();
panel.add(svgCanvas);


// Add the windowTabbedPane to the MasterFrame, centered.
getContentPane().add(panel, java.awt.BorderLayout.CENTER);
MapView mapView = new MapView(mainApp, panel);
// .... skip a lot of menu building code ...


private void loadMapMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser = new JFileChooser(owsMapsDirectory);
int choice = chooser.showOpenDialog(mapView);
if (choice == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
try {
svgCanvas.setURI(file.toURL().toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}


//  End AppMainFrame class code...


// Begin MapView class code...

public MapView(OpenWarSim mainApp, JScrollPane panel) {
       // Default constructor
       this.mainApp    = mainApp;
       panel.setPreferredSize(new java.awt.Dimension(mapWidth, mapHeight));
       createMapView(panel);
   }

public JScrollPane createMapView(JScrollPane panel) {
JSVGCanvas svgCanvas = new JSVGCanvas();
panel.add(svgCanvas);
// Below here, the SVG Event Listeners are set up.


//  End MapView class code...

Now this morning when I started futzing with it, it was working up to the addGVTTreeRendererListener event not firing... but no errors. Now, after messing... it errors out with the following errors:

java.lang.NullPointerException
at AppMainFrame.loadMapMenuItemActionPerformed(AppMainFrame.java:308)
at AppMainFrame.access$1(AppMainFrame.java:302)
at AppMainFrame$2.actionPerformed(AppMainFrame.java:143)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:943)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)


This is dying at the try block in the loadMapView() method, specifically at the setURI call.

I can zip and send the entire thing so that someone could help me figure out what I am doing wrong. My guess is that for some reason, the JSVGCanvas component is not properly referenced/linked into the application. I have tried setting the JScrollPane's background color, as well as the JSVGCanvas, neither of which work... which makes me think that this is a simple reference error on my part... but I can't find it. :(

Many thanks in advance.  Just email me and I can forward the files.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to