CRTVLB ha scritto:
Ci sto provando in tutti i modi ma non riesco. Scrivo il codice della Vista che è il mio JFrame mi potresti dire come modificarla per ottenere quello che voglio?
package progetto.progetto1.vista;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import progetto.progetto1.Costanti;
import progetto.progetto1.controllo.*;
import progetto.progetto1.modello.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Vista extends javax.swing.JFrame {
private Log logger = LogFactory.getLog(this.getClass().getName());
private Modello modello;
private Controllo controllo;
private Map<String,Object> mappaSottoViste = new HashMap<String,Object>();
private JDialog dialogo;
public Vista( Controllo controllo, Modello modello ) {
logger.info("Creo e Visualizzo la Vista");
this.controllo = controllo;
this.modello = modello;
initComponents();
inizializza();
inizializzaSottoViste();
schermoPrincipale();
}
public Object getSottoViste(String nome){
return this.mappaSottoViste.get(nome);
}
private void inizializza() {
AzioneEsci ae = (AzioneEsci) this.controllo.getAction(Costanti.AZIONE_ESCI);
this.itemEsci.setAction(ae);
AzioneInformazione ai = (AzioneInformazione) this.controllo.getAction(Costanti.AZIONE_INFORMAZIONE);
this.itemInformazioni.setAction(ai);
AzioneVisualizzaFinestraAggiungi avfa = (AzioneVisualizzaFinestraAggiungi) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_AGGIUNGI);
this.itemAggiungi.setAction(avfa);
AzioneCercaPerSegno acs = (AzioneCerca) this.controllo.getAction(Costanti.AZIONE_CERCA);
this.itemCercaPerSegno.setAction(acs);
AzioneVisualizzaFinestraVisualizza avfv = (AzioneVisualizzaFinestraVisualizza) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_VISUALIZZA);
this.itemVisualizza.setAction(avfs);
AzioneElimina ael = (AzioneElimina) this.controllo.getAction(Costanti.AZIONE_ELIMINA);
this.ItemElimina.setAction(ael);
AzioneVisualizzaFinestraCerca avfc = (AzioneVisualizzaFinestraCerca) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_CERCA);
this.itemCercaPerData.setAction(avfc);
AzioneVisualizzaFinestraModifica avfm = (AzioneVisualizzaFinestraModifica) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA);
this.ItemModificaTutto.setAction(avfm);
AzioneVisualizzaFinestraCercaPerNome avfcpn = (AzioneVisualizzaFinestraCercaPerNome) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_CERCA_PER_NOME);
this.itemCercaPerNome.setAction(avfcps);
AzioneVisualizzoFinestraModificaSoloData avfmsd = (AzioneVisualizzoFinestraModificaSoloData) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA_SOLO_DATA);
this.ItemModificaSoloData.setAction(avfmsd);
}
public void finestraInfoApplicazione () {
StringBuffer stringa = new StringBuffer();
stringa.append(" \n ");
stringa.append("Prova di Progetto\n\n");
JOptionPane.showMessageDialog( this, stringa, " Informazioni Applicazione ", JOptionPane.INFORMATION_MESSAGE);
}
public Controllo getControllo() {
return controllo;
}
public Modello getModello() {
return modello;
}
private void schermoPrincipale() {
PannelloPrincipale pp= (PannelloPrincipale) this.getSottoViste(Costanti.PANNELLO_PRINCIPALE);
JScrollPane scroll = new JScrollPane(pp);
this.getContentPane().add(scroll);
this.pack();
this.setDefaultCloseOperation(Vista.DO_NOTHING_ON_CLOSE); // qui ho impostato l'operazione di default
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private void inizializzaSottoViste() {
this.setTitle("Benvenuto");
this.mappaSottoViste.put(Costanti.PANNELLO_PRINCIPALE,new PannelloPrincipale(this));
this.mappaSottoViste.put(Costanti.FINESTRA_CERCA, new FinestraCerca(this));
this.mappaSottoViste.put(Costanti.FINESTRA_AGGIUNGI, new FinestraAggiungi(this));
this.mappaSottoViste.put(Costanti.FINESTRA_MODIFICA,new FinestraModifica((this)));
this.mappaSottoViste.put(Costanti.FINESTRA_VISUALIZZA, new FinestraVisualizzaSegno(this));
this.mappaSottoViste.put(Costanti.FINESTRA_MODIFICA_SOLO_DATA, new FinestraModificaSoloData(this));
this.mappaSottoViste.put(Costanti.FINESTRA_CERCA_PER_NOME, new FinestraCercaPerSegno(this));
}
public void finestraErrore(String string) {
JOptionPane.showMessageDialog(this,string,"Errore", JOptionPane.ERROR_MESSAGE);
}
public void visualizzaFinestraWarning(String err){
JOptionPane.showMessageDialog(this, err, "Attenzione", JOptionPane.WARNING_MESSAGE);
}
}
Te ne sarei veramente grato
All'interno dell'overload del costruttore [public Vista( Controllo controllo, Modello modello ){...}]
alla fine inserisci:
super.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
super.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int conferma = JOptionPane.showConfirmDialog(null,
"Sicuro di voler uscire?", "Conferma uscita dal programma",
JOptionPane.YES_NO_OPTION);
if (conferma == JOptionPane.YES_OPTION) {
dispose();
}
}
});