Salve a tutti ragazzi
ho dei piccoli problemi su un'applicazione che sto sviluppando.
Spero di non fare un casino ma ho aperto solo un 3D per i vari problemi che ho.
Iniziamo dal più importante.
La mia applicazioni ha dei pulsanti che permettono di modificare o cercare un oggetto.
ora ho fatto delle azioni chiamate: AzioneVisualizzaFinestraModifica e AzioneVisualizzaFinestraCerca
codice:
public class AzioneVisualizzaFinestraModifica extends AbstractAction{
private Controllo controllo;
private Log logger = LogFactory.getLog(AzioneVisualizzaFinestraCerca.class);
AzioneVisualizzaFinestraModifica(Controllo controllo) {
this.controllo = controllo;
this.putValue(Action.NAME,"Modifica");
this.putValue(Action.SHORT_DESCRIPTION,"Visualizza la modifica ");
}
public void actionPerformed(ActionEvent e) {
logger.info("Visualizzo la Finesta Modifica."+ " " + "Azione:"+" " + this.getClass().getName());
PannelloPrincipale pp = (PannelloPrincipale) this.controllo.getVista().getSottoViste(Costanti.PANNELLO_PRINCIPALE);
Modello modello = this.controllo.getModello();
FinestraModifica finestra = ( FinestraModifica ) this.controllo.getVista().getSottoViste(Costanti.FINESTRA_MODIFICA);
int indiceSelezione = pp.getTabellaSegni().getSelectedRow();
if ( indiceSelezione != -1 ) {
Oggetto o = ( oggetto ) modello.getBean(Costanti.OGGETTO);
Oggetto1 o1 = oroscopo.getOggetto1(indiceSelezione);
if ( segno != null ) {
modello.addBean(Costanti.SEGNO_ZODIACALE, segno );
finestra.visualizzaFinestraModifica();
} else {
pp.finestraErrore("Errore"," Non ci sono Segni Zodiacali ");
}
} else {
pp.finestraErrore("Errore"," Selezionare un segno Zodiacale inserito per poterne modifica i valori ");
}
}
Questa azione è basata su un indice di selezionamento di una tabella, in pratica selezionando una riga della tabella mi fa modificare l'oggetto selezionato.
Per il cerca ho scritto questo codice
codice:
public class AzioneVisualizzaFinestraCerca extends AbstractAction {
private Controllo controllo;
private Log logger = LogFactory.getLog(AzioneVisualizzaFinestraCerca.class);
public AzioneVisualizzaFinestraCerca(Controllo controllo) {
this.controllo = controllo;
this.putValue(NAME, "Cerca");
this.putValue(SHORT_DESCRIPTION, " Visualizza la Finestra Cerca");
}
public void actionPerformed(ActionEvent e) {
logger.info("Visualizzo la finestra Cerca ." + " " + "Azione:" + this.getClass().getName());
FinestraCerca fc = (FinestraCerca)this.controllo.getVista().getSottoViste(Costanti.FINESTRA_CERCA);
fc.setVisible(true);
}
codice scritto bene, in fase di compilazione tutto bene ma quanto l'eseguo e premo il pulsante che attiva l'azione mi esce questo tipo di errore:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException in entrambe le azioni sulla riga che serve a visualizzare la finestra.
Il vero problema è che io ho due azioni visualizza modifica(questa e una cha fa modificare l'oggetto solo in parte con alcuni campi non modificabili) e due azioni visualizza cerca(questa ed una che permetta la ricerca per data) ora il codice di visualizza è praticamente lo stesso, così come la costruzione delle due finestre e il metodo visualizzaFinestra in esso, ma li funziona e qui no e non capisco perché.
Seconda domanda: vorrei appunto decidere di usare uno dei due modifica e uno dei due cerca tramite checkbox e buttonRadio. In poche parole tramite una buttorRadio seleziono il tipo di ricerca che voglio effettuare(per nome o per data) e cliccando il pulsante cerca mi visualizza una delle due finestre cerca. Stesso discorso per il modifica solo gestito con checkBox.
Sinceramente ho provato a scrivere diverso codice ma non riesco proprio a farlo funzionare. Non so se è utile ma i due radiobutton cerca e le due checkBox modifica le ho inserite in due groupRadio diversi.
Spero di essere stato chiaro e che mi riusciate ad aiutare.
Saluti.