PDA

View Full Version : [Java] Java Desktop Application di NetBeans e JFileChooser


grigor91
15-10-2009, 15:55
In un metodo della classe adibita all'interfaccia grafica creo un'istanza della classe JFileChooser. Questo oggetto ha il metodo showOpenDialog() che vuole come parametro un oggetto della classe java.awt.Component.
Se io gli passo come parametro this da errore per incompatibilità di tipi, solo che la classe è una sottoclasse di FrameView, a sua volta sottoclasse anche di Component.
Perchè da questo errore?

banryu79
15-10-2009, 16:26
Se io gli passo come parametro this da errore per incompatibilità di tipi, solo che la classe è una sottoclasse di FrameView, a sua volta sottoclasse anche di Component.
Perchè da questo errore?
Se sicuro che FrameView discenda dal cielo, cioè sia un'estensione di java.awt.Component?
Te lo chiedo perchè non ho mai usato Java Desktop Application, ma ho appena creato un progetto di quel tipo e vedo che (Ctrl + F12 con FrameView selzionato) FrameView estende View la quale estende AbstractBean.

Comunque hai due opzioni:
1) puoi passare null, come parent per il JFileChooser (vedi javadoc).
2) leggendo il metodo per mostrare l'autogenerata AboutBox per l'applicazione si può dedurre come ottenere il "main frame" dell'applicativo:

public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = DesktopApplicationTest.getApplication().getMainFrame();
aboutBox = new DesktopApplicationTestAboutBox(mainFrame);
aboutBox.setLocationRelativeTo(mainFrame);
}
DesktopApplicationTest.getApplication().show(aboutBox);
}


Puoi fare lo stesso per visualizzare il tuo JFileChooser ;)

PGI-Bis
15-10-2009, 16:26
Prova usando un qualified this.