errors in Hashtable to HashMap
Hi All,
This is a scaled down version of the program:
http://sio.midco.net/dfranklin/phonedial/index.html
I am trying to revise the program that was constructed originally
with a Hashtable to HashMap.
This revision below compiles with no error.
The HashMap item will correctly identify at the line:
System.out.println("Test line 1");
String btn3 = buttonSoundNames.get(keyPad.b3);
// will show "3.au"
But in the second instance it will not correctly identify the button
being pressed at the line:
System.out.println("Test line 2");
String name = new String((String)
buttonSoundNames.get((Button)e.target));
System.out.println(name);
//fails to identify the key press name
//"1.au" or "2.au" or "3.au" is expected
The runtime error list is:
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at TestPhneDialer.action(TestPhneDialer.java:30)
at java.awt.Component.handleEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown
Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
import java.applet.*;
import java.awt.*;
import java.util.HashMap;
public class TestPhneDialer extends Applet {
boolean DEBUG = false;
HashMap buttonSoundNames;
KeyPad keyPad;
public void init() {
keyPad = new KeyPad();
HashMap<Button,String>buttonSoundNames =
new HashMap<Button,String>(3,3);
buttonSoundNames.put(keyPad.b1, "1.au");
buttonSoundNames.put(keyPad.b2, "2.au");
buttonSoundNames.put(keyPad.b3, "3.au");
setLayout(new FlowLayout());
add(keyPad);
validate();
System.out.println("Test line 1");
String btn3 = buttonSoundNames.get(keyPad.b3);
// will show "3.au"
System.out.println(btn3);
}
public boolean action(Event e, Object arg) {
if (e.target instanceof Button) {
System.out.println("Test line 2");
String name = new String((String)
buttonSoundNames.get((Button)e.target));
System.out.println(name);
//fails to identify the key press name
//"1.au" or "2.au" or "3.au" is expected
return true;
}
return false;
}
}
class KeyPad extends Panel {
Button b1,b2,b3;
KeyPad() {
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
setLayout(new GridLayout(4,3,10,10));
add(b1);
add(b2);
add(b3);
}
}