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
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
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.