avevi proprio ragione non avevo instanziato l'oggetto chooser ma ora è nato un altro problema ovvero, come hai visto per ottenere una finestra di dialogo la quale mi permetta di aprire un file ho usato il metodo showOpenDialog, ovviamente ho cercato anche di realizzare la finestra dii dialogo la quale mi permetta di salvare un file usando il metofo showSaveDialog ma mi compare il solo null pointer con il seguente messaggio della finestra di DOS:

codice:
C:\j2sdk1.4.1_01\bin>java TextEditTest
java.lang.NullPointerException
        at TextEditFrame$FileMenuListener.menuSelected(TextEditFrame.java:356)
        at javax.swing.JMenu.fireMenuSelected(JMenu.java:1106)
        at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1199)
        at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.ja
va:361)
        at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:22
7)
        at javax.swing.JMenu.setSelected(JMenu.java:286)
        at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1266)
        at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager
.java:81)
        at javax.swing.plaf.basic.BasicMenuUI$MouseInputHandler.mousePressed(Bas
icMenuUI.java:314)
        at java.awt.Component.processMouseEvent(Component.java:5090)
        at java.awt.Component.processEvent(Component.java:4890)
        at java.awt.Container.processEvent(Container.java:1566)
        at java.awt.Component.dispatchEventImpl(Component.java:3598)
        at java.awt.Container.dispatchEventImpl(Container.java:1623)
        at java.awt.Component.dispatchEvent(Component.java:3439)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3162)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
        at java.awt.Container.dispatchEventImpl(Container.java:1609)
        at java.awt.Window.dispatchEventImpl(Window.java:1585)
        at java.awt.Component.dispatchEvent(Component.java:3439)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:197)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
sotto ti riporto le modifiche fatte con la nuova routine la quale "dovrebbe" gestire l'evento per l'apertura di un file:

codice:
public class TextEditFrame extends JFrame{
	
.......
.......

	private JFileChooser chooser = new JFileChooser();
.......
.......	

//BARRA DEI MENU
		//menu di massimo livello FILE
		JMenu fileMenu = new JMenu("File");
		//mostra il tasto mnemonico
		fileMenu.setMnemonic('F');
		//agginge le voci del menu File
		JMenuItem newItem = fileMenu.add(new TestAction("New"));	
		
		//agginge le voci del menu File con i tasti di scelta rapida
		JMenuItem openItem = new JMenuItem("Open");
		openItem.setAccelerator(KeyStroke.getKeyStroke(
			KeyEvent.VK_O, InputEvent.CTRL_MASK));
		fileMenu.add(openItem);
		openItem.addActionListener(new FileOpenListener());
		
		//inserisce una linea separatrice fra le voci del menu File
		fileMenu.addSeparator();
		
		saveItem = new JMenuItem("Save");
		saveItem.setAccelerator(KeyStroke.getKeyStroke(
			KeyEvent.VK_S, InputEvent.CTRL_MASK));
		fileMenu.add(saveItem);
		openItem.addActionListener(new FileSaveListener());
		
.....
.....


		//BARRA DEGLI STRUMENTI
		//imposta le azioni dei pulsanti
		Action newAction = new TestAction("New", new ImageIcon("new.gif"));
		
		JButton openButton = new JButton(new ImageIcon("open.gif"));
		openButton.addActionListener(new FileOpenListener());
		
		JButton saveButton = new JButton(new ImageIcon("save.gif"));
		saveButton.addActionListener(new FileSaveListener());
		
......
......


	/*
		@effects apre una finestra di dialogo di scelta dei file
	**/
	private class FileOpenListener implements ActionListener{
		public void actionPerformed(ActionEvent evt){
			//imposta la finestra di scelta dei file
			chooser.setCurrentDirectory(new File("."));
			//accetta tutti i file di testo con estenzione .txt .java .c .cpp
			final ExtensionFileFilter filter
				= new ExtensionFileFilter();
			filter.addExtension("txt");
			filter.addExtension("java");
			filter.addExtension("c");
			filter.addExtension("cpp");
			filter.setDescription("Text files");
			chooser.setFileFilter(filter);
			
			//mostra una finestra di dialogo di scelta del file
			int result
				= chooser.showOpenDialog(TextEditFrame.this);
				//per salvare usare showSaveDialog
			//se il file di testo selezionato è accettato, lo visualizza nella casella di testo
			if(result == JFileChooser.APPROVE_OPTION)
				textArea.setText(chooser.getSelectedFile().getPath());
		}//actionPerformed	
	}//FileOpenListener
	
	/*
		@effects apre una finestra di dialogo di scelta dei file
	**/
	private class FileSaveListener implements ActionListener{
		public void actionPerformed(ActionEvent evt){
			//imposta la finestra di scelta dei file
			chooser.setCurrentDirectory(new File("."));
			//accetta tutti i file di testo con estenzione .txt .java .c .cpp
			final ExtensionFileFilter filter
				= new ExtensionFileFilter();
			filter.addExtension("txt");
			filter.addExtension("java");
			filter.addExtension("c");
			filter.addExtension("cpp");
			filter.setDescription("Text files");
			chooser.setFileFilter(filter);
			
			//mostra una finestra di dialogo di scelta del file
			int result
				= chooser.showSaveDialog(TextEditFrame.this);
				//per salvare usare showSaveDialog
			//se il file di testo selezionato è accettato, lo visualizza nella casella di testo
			if(result == JFileChooser.APPROVE_OPTION)
				textArea.setText(chooser.getSelectedFile().getPath());
		}//actionPerformed	
	}//FileSaveListener