Quando premo su annulla o scegli riders non funziona

di il
11 risposte

Quando premo su annulla o scegli riders non funziona

Buon pomeriggio volevo chiedervi se potete aiutarmi a capire perchè se clicco su annulla o scegli riders non si apre nessuna schermata posto di seguito il codice:
package GuiFood;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;
import javax.swing.JSeparator;
import javax.swing.ImageIcon;
import javax.swing.JButton;

import Classi.Controller;
import Classi.Ordine;
import Classi.Rider;

import javax.swing.JComboBox;



public class Fattura extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField textField_Nome;
    private JTextField textField_Cognome;
    private JTextField textField_Provincia;
    private JTextField textField_Via;
    private JTextField textField_Telefono;
    private JTextField textField_CAP;
    private JTextField textField_IndirizzoEmail;
    private JTextField textField_Riders;
    Controller ctrl;

	public Fattura(final Controller ctrl){
		
		setResizable(false);
		setTitle("Dettagli fattura");
		this.getContentPane().setBackground(new Color(255, 165, 0));
		this.setBounds(100, 100, 747, 504);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setLayout(null);
		
			
		JLabel Label_Fattura_1 = new JLabel("DETTAGLI DI FATTURAZIONE");
		Label_Fattura_1.setForeground(Color.WHITE);
		Label_Fattura_1.setFont(new Font("Kohinoor Devanagari", Font.BOLD, 35));
		Label_Fattura_1.setBounds(37, 6, 507, 43);
		getContentPane().add(Label_Fattura_1);
		
		
			
		JButton btnIndietro = new JButton("");
		btnIndietro.setBounds(6, 6, 29, 37);
		btnIndietro.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./indietro.png")), 25, 25));
		getContentPane().add(btnIndietro);	
		
		
			
		JLabel label_nome = new JLabel("Nome");
		label_nome.setForeground(Color.WHITE);
		label_nome.setBounds(6, 61, 61, 16);
		getContentPane().add(label_nome);
		
		JLabel lblIconaNome = new JLabel("");
		lblIconaNome.setBounds(6, 77, 21, 20);
		lblIconaNome.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./utente.png")), 15, 15));
		getContentPane().add(lblIconaNome);
		
		JSeparator separator_Nome = new JSeparator();
		separator_Nome.setForeground(Color.WHITE);
		separator_Nome.setBounds(6, 93, 178, 12);
		getContentPane().add(separator_Nome);
		
		textField_Nome = new JTextField();
		textField_Nome.setSelectionColor(Color.LIGHT_GRAY);
		textField_Nome.setForeground(Color.BLACK);
		textField_Nome.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Nome.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Nome.setColumns(10);
		textField_Nome.setBorder(null);
		textField_Nome.setBackground(new Color(255, 165, 0));
		textField_Nome.setBounds(26, 77, 158, 18);
		getContentPane().add(textField_Nome);
		
			
		JLabel label_cognome = new JLabel("Cognome");
		label_cognome.setForeground(Color.WHITE);
		label_cognome.setBounds(240, 61, 61, 16);
		getContentPane().add(label_cognome);
		
		JLabel lblconaCognome = new JLabel("");
		lblconaCognome.setBounds(240, 77, 21, 20);
		lblconaCognome.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./utente.png")), 15, 15));
		getContentPane().add(lblconaCognome);

		JSeparator separator_Cognome = new JSeparator();
		separator_Cognome.setForeground(Color.WHITE);
		separator_Cognome.setBounds(239, 93, 199, 12);
		getContentPane().add(separator_Cognome);
		
		textField_Cognome = new JTextField();
		textField_Cognome.setSelectionColor(Color.LIGHT_GRAY);
		textField_Cognome.setForeground(Color.BLACK);
		textField_Cognome.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Cognome.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Cognome.setColumns(10);
		textField_Cognome.setBorder(null);
		textField_Cognome.setBackground(new Color(255, 165, 0));
		textField_Cognome.setBounds(260, 77, 178, 18);
		getContentPane().add(textField_Cognome);
		
		
		JLabel lblVia = new JLabel("Via ");
		lblVia.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
		lblVia.setForeground(Color.WHITE);
		lblVia.setBounds(6, 107, 89, 16);
		getContentPane().add(lblVia);
		
		JLabel lblconaVia = new JLabel("");
		lblconaVia.setBounds(6, 128, 26, 23);
		lblconaVia.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./strada.png")), 30, 30));
		getContentPane().add(lblconaVia);
		
		JSeparator separator_Via = new JSeparator();
		separator_Via.setForeground(Color.WHITE);
		separator_Via.setBounds(6, 146, 188, 12);
		getContentPane().add(separator_Via);
		
		textField_Via = new JTextField();
		textField_Via.setSelectionColor(Color.LIGHT_GRAY);
		textField_Via.setForeground(Color.BLACK);
		textField_Via.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Via.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Via.setColumns(10);
		textField_Via.setBorder(null);
		textField_Via.setBackground(new Color(255, 165, 0));
		textField_Via.setBounds(36, 133, 148, 18);
		getContentPane().add(textField_Via);
		
		
			
		JLabel label_CAP = new JLabel("CAP");
		label_CAP.setForeground(Color.WHITE);
		label_CAP.setBounds(240, 107, 49, 16);
		getContentPane().add(label_CAP);
		
		JLabel lblconaCap = new JLabel("");
		lblconaCap.setBounds(240, 127, 29, 23);
		lblconaCap.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./strada.png")), 30, 30));
		getContentPane().add(lblconaCap);
		
		JSeparator separator_Cap = new JSeparator();
		separator_Cap.setForeground(Color.WHITE);
		separator_Cap.setBounds(240, 146, 199, 11);
		getContentPane().add(separator_Cap);
		
		textField_CAP = new JTextField();
		textField_CAP.setSelectionColor(Color.LIGHT_GRAY);
		textField_CAP.setForeground(Color.BLACK);
		textField_CAP.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_CAP.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_CAP.setColumns(10);
		textField_CAP.setBorder(null);
		textField_CAP.setBackground(new Color(255, 165, 0));
		textField_CAP.setBounds(270, 128, 168, 23);
		getContentPane().add(textField_CAP);
		
		
		JLabel label_provincia = new JLabel("Provincia");
		label_provincia.setForeground(Color.WHITE);
		label_provincia.setBounds(6, 170, 89, 16);
		getContentPane().add(label_provincia);
		
		JLabel lblconaProvincia = new JLabel("");
		lblconaProvincia.setBounds(6, 190, 26, 23);
		lblconaProvincia.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./strada.png")), 30, 30));
		getContentPane().add(lblconaProvincia);
		
		JSeparator Provincia = new JSeparator();
		Provincia.setForeground(Color.WHITE);
		Provincia.setBounds(6, 207, 188, 12);
		getContentPane().add(Provincia);
		
		textField_Provincia = new JTextField();
		textField_Provincia.setSelectionColor(Color.LIGHT_GRAY);
		textField_Provincia.setForeground(Color.BLACK);
		textField_Provincia.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Provincia.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Provincia.setColumns(10);
		textField_Provincia.setBorder(null);
		textField_Provincia.setBackground(new Color(255, 165, 0));
		textField_Provincia.setBounds(36, 190, 158, 18);
		getContentPane().add(textField_Provincia);
		
		
	
		JLabel label_telefono = new JLabel("Telefono");
		label_telefono.setForeground(Color.WHITE);
		label_telefono.setBounds(6, 231, 89, 16);
		getContentPane().add(label_telefono);
		
		JLabel lblconaTelefono = new JLabel("");
		lblconaTelefono.setBounds(6, 253, 21, 23);
		lblconaTelefono.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./cellulare.png")), 15, 15));
		getContentPane().add(lblconaTelefono);
		
		
		JSeparator separator_Telefono = new JSeparator();
		separator_Telefono.setForeground(Color.WHITE);
		separator_Telefono.setBounds(6, 270, 188, 12);
		getContentPane().add(separator_Telefono);
		
		textField_Telefono = new JTextField();
		textField_Telefono.setSelectionColor(Color.LIGHT_GRAY);
		textField_Telefono.setForeground(Color.BLACK);
		textField_Telefono.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Telefono.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Telefono.setColumns(10);
		textField_Telefono.setBorder(null);
		textField_Telefono.setBackground(new Color(255, 165, 0));
		textField_Telefono.setBounds(26, 253, 168, 18);
		getContentPane().add(textField_Telefono);
		
		
				
		JLabel label_indirizzoEmail = new JLabel("Indirizzo email");
		label_indirizzoEmail.setForeground(Color.WHITE);
		label_indirizzoEmail.setBounds(6, 293, 108, 16);
		getContentPane().add(label_indirizzoEmail);
		
		JLabel lblconaEmail = new JLabel("");
		lblconaEmail.setBounds(6, 306, 21, 33);
		lblconaEmail.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./email.png")), 15, 15));
		getContentPane().add(lblconaEmail);
		
		JSeparator separator_IndirizzoEmail = new JSeparator();
		separator_IndirizzoEmail.setForeground(Color.WHITE);
		separator_IndirizzoEmail.setBounds(1, 327, 193, 12);
		getContentPane().add(separator_IndirizzoEmail);
		
		textField_IndirizzoEmail = new JTextField();
		textField_IndirizzoEmail.setSelectionColor(Color.LIGHT_GRAY);
		textField_IndirizzoEmail.setForeground(Color.BLACK);
		textField_IndirizzoEmail.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_IndirizzoEmail.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_IndirizzoEmail.setColumns(10);
		textField_IndirizzoEmail.setBorder(null);
		textField_IndirizzoEmail.setBackground(new Color(255, 165, 0));
		textField_IndirizzoEmail.setBounds(26, 310, 168, 18);
		getContentPane().add(textField_IndirizzoEmail);
		
		
		
		JLabel label_ristorante = new JLabel("Ristorante");
		label_ristorante.setForeground(Color.WHITE);
		label_ristorante.setBounds(6, 351, 108, 16);
		getContentPane().add(label_ristorante);
		
		JComboBox comboBox = new JComboBox();
		comboBox.setBounds(6, 379, 199, 16);
		getContentPane().add(comboBox);
		
		
		JLabel label_riders = new JLabel("Riders");
		label_riders.setForeground(Color.WHITE);
		label_riders.setBounds(6, 407, 49, 16);
		getContentPane().add(label_riders);

		JLabel lblconaRiders = new JLabel("");
		lblconaRiders.setBounds(6, 427, 21, 33);
		lblconaRiders.setIcon(scaleImageIcon(new ImageIcon(Ordine.class.getResource("/Fattura./utente.png")), 15, 15));
		getContentPane().add(lblconaRiders);
		
		JSeparator separator_Riders = new JSeparator();
		separator_Riders.setForeground(Color.WHITE);
		separator_Riders.setBounds(6, 448, 199, 12);
		getContentPane().add(separator_Riders);
		
		textField_Riders = new JTextField();
		textField_Riders.setSelectionColor(Color.LIGHT_GRAY);
		textField_Riders.setForeground(Color.BLACK);
		textField_Riders.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		textField_Riders.setDisabledTextColor(Color.LIGHT_GRAY);
		textField_Riders.setColumns(10);
		textField_Riders.setBorder(null);
		textField_Riders.setBackground(new Color(255, 165, 0));
		textField_Riders.setBounds(26, 433, 178, 18);
		getContentPane().add(textField_Riders);
		
		
	
		JButton btnScegliRiders = new JButton("Scegli riders");
//		btnScegliRiders.addActionListener(new ActionListener() {
//			public void actionPerformed(ActionEvent e) {
//				ctrl.visualizzazioneSceltaRider();				
//			}
//		});
		btnScegliRiders.setForeground(new  Color(255, 165, 0));
		btnScegliRiders.setBounds(260, 422, 126, 38);
		btnScegliRiders.setIcon(scaleImageIcon(new ImageIcon(Rider.class.getResource("/Fattura./persona.png")), 25, 25));
		this.getContentPane().add(btnScegliRiders);
		btnScegliRiders.addActionListener(this);

			
		JPanel panel = new JPanel();
		panel.setBackground(new Color(255, 140, 0));
		panel.setForeground(new Color(255, 140, 0));
		panel.setBounds(450, 61, 288, 359);
		getContentPane().add(panel);
		panel.setLayout(null);
		
		
		
		JLabel Label_IlTuoOrdine = new JLabel("IL TUO ORDINE");
		Label_IlTuoOrdine.setBounds(88, 6, 100, 23);
		panel.add(Label_IlTuoOrdine);
		Label_IlTuoOrdine.setForeground(Color.WHITE);
		Label_IlTuoOrdine.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
		
		
		JPanel panel_1 = new JPanel();
		panel_1.setBackground(new Color(255, 153, 51));
		panel_1.setBounds(6, 34, 276, 238);
		panel.add(panel_1);
		panel_1.setLayout(null);
		
		
		JLabel label_prodotto = new JLabel("PRODOTTO");
		label_prodotto.setForeground(Color.WHITE);
		label_prodotto.setBounds(0, 6, 85, 16);
		panel_1.add(label_prodotto);
		
		
		JLabel label_subTotale = new JLabel("SUBTOTALE");
		label_subTotale.setForeground(Color.WHITE);
		label_subTotale.setBounds(191, 6, 79, 16);
		panel_1.add(label_subTotale);
		
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(0, 22, 276, 12);
		panel_1.add(separator_1);
		separator_1.setForeground(Color.WHITE);
		
		
		JLabel label_Totale = new JLabel("TOTALE");
		label_Totale.setForeground(Color.WHITE);
		label_Totale.setBounds(0, 213, 55, 16);
		panel_1.add(label_Totale);
		
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setForeground(Color.WHITE);
		separator_2.setBounds(0, 200, 276, 12);
		panel_1.add(separator_2);
		
		
		JButton btnEffettuaOrdine = new JButton("Effettua Ordine");
		btnEffettuaOrdine.setForeground(new Color(255, 165, 0));
		btnEffettuaOrdine.setBounds(143, 295, 139, 29);
		panel.add(btnEffettuaOrdine);
		btnEffettuaOrdine.addActionListener(this);


		JButton btnAnnulla = new JButton("Annulla");
		btnAnnulla.setForeground(new  Color(255, 165, 0));
		btnAnnulla.setBounds(6, 295, 139, 29);
		panel.add(btnAnnulla);
		btnAnnulla.addActionListener(this);

	}

	public void actionPerformed(ActionEvent e) {
		
	    if(e.getActionCommand().equals("Scegli riders"))
	    {
			ctrl.visualizzazioneSceltaRider();				
	    }
		else if(e.getActionCommand().equals("Annulla"))
		{
		    ctrl.visualizzazioneMenu();
		}
		else if(e.getActionCommand().equals("Effettua Ordine"))
		{
			//ctrl.VisualizzazioneAvvisi("ordine effettuato con successo");
				  JOptionPane.showMessageDialog(null, "Ordine effettuato con successo");
	     }
     }
}

11 Risposte

  • Re: Quando premo su annulla o scegli riders non funziona

    saraciao ha scritto:


    perchè se clicco su annulla o scegli riders non si apre nessuna schermata
    Allora: dal solo codice postato (non è ovviamente completo) a me risulta che i punti nel actionPerformed dove testi il action command vengono sicuramente raggiunti.
    Cioè, se premi il pulsante "Scegli riders", sicuramente arriva a quel ctrl.visualizzazioneSceltaRider() , "a vista" non vedo nulla di errato in tutto questo. Cosa faccia (o non riesca a fare) oltre però non lo so, poiché appunto non ho evidenza del resto del codice.

    P.S. non è comunque un buon modo quello di testare un action command che deriva (per default) dal testo di un pulsante.
  • Re: Quando premo su annulla o scegli riders non funziona

    andbin ha scritto:


    saraciao ha scritto:


    perchè se clicco su annulla o scegli riders non si apre nessuna schermata
    Allora: dal solo codice postato (non è ovviamente completo) a me risulta che i punti nel actionPerformed dove testi il action command vengono sicuramente raggiunti.
    Cioè, se premi il pulsante "Scegli riders", sicuramente arriva a quel ctrl.visualizzazioneSceltaRider() , "a vista" non vedo nulla di errato in tutto questo. Cosa faccia (o non riesca a fare) oltre però non lo so, poiché appunto non ho evidenza del resto del codice.

    P.S. non è comunque un buon modo quello di testare un action command che deriva (per default) dal testo di un pulsante.
    ok però il problema che se uso il metodo commentato nel codice tutto funziona bene però che lo indico nell'actionPerformed mi da errore su "ctrl.visualizzazioneSceltaRider()" però il problema non sta ne nel controller ne nel visualizzaSceltaRiders() perchè come ho detto prima se lo inserisco nel bottone( parte commentata) tutto funziona correttamente. Nel controller ho:
    
    
                   public void visualizzazioneSceltaRider() {
    		scelta_rider = new Riders(this);
    		scelta_rider.setVisible(true);
    		scelta_rider.setLocationRelativeTo(fattura);
    	}
    	
    	
    
  • Re: Quando premo su annulla o scegli riders non funziona

    "forum.tomshw.it/threads/java-quando-clicco-su-modifica-profilo-o-esci-nel-menu-non-funziona.851624/page-2"
  • Re: Quando premo su annulla o scegli riders non funziona

    saraciao ha scritto:


    se lo inserisco nel bottone( parte commentata) tutto funziona correttamente.
    Già ... perché il parametro del costruttore NON lo hai assegnato al campo.
        Controller ctrl;        // <---- questo resta null !!!
    
    	public Fattura(final Controller ctrl){
    Non "cascare" su queste cose .....
  • Re: Quando premo su annulla o scegli riders non funziona

    andbin ha scritto:


    saraciao ha scritto:


    se lo inserisco nel bottone( parte commentata) tutto funziona correttamente.
    Già ... perché il parametro del costruttore NON lo hai assegnato al campo.
        Controller ctrl;        // <---- questo resta null !!!
    
    	public Fattura(final Controller ctrl){
    Non "cascare" su queste cose .....
    Ok quindi ho levato final da
    public Fattura(final Controller ctrl){
    dovrebbe funzionare no? invece non mi funziona lo stesso
  • Re: Quando premo su annulla o scegli riders non funziona

    saraciao ha scritto:


    Ok quindi ho levato final da
    public Fattura(final Controller ctrl){
    dovrebbe funzionare no? invece non mi funziona lo stesso
    Il final non c'entra niente (cambia solo il fatto che non puoi assegnare altro al parametro).

    Devi assegnare: parametro ctrl ---> campo ctrl.
  • Re: Quando premo su annulla o scegli riders non funziona

    andbin ha scritto:


    saraciao ha scritto:


    Ok quindi ho levato final da
    public Fattura(final Controller ctrl){
    dovrebbe funzionare no? invece non mi funziona lo stesso
    Il final non c'entra niente (cambia solo il fatto che non puoi assegnare altro al parametro).

    Devi assegnare: parametro ctrl ---> campo ctrl.
    ah sisi scusa...quindi manca nel codice:
    this.ctrl=ctrl
    Un ultima cosa ora ho un bottone con solo l'icona che mi serve per tornare indietro come faccio a richiamarlo nell'actionPerformed? posso tipo inserire sul bottone:
    setName("indietro");  
    però poi nel confronto come posso fare? così è sbagliato vero?
    if(e.getActionCommand().equals("nomeBottone"))
  • Re: Quando premo su annulla o scegli riders non funziona

    saraciao ha scritto:


    Un ultima cosa ora ho un bottone con solo l'icona che mi serve per tornare indietro come faccio a richiamarlo nell'actionPerformed? Non posso fare:
    if(e.getActionCommand().equals("nomeBottone"))
    Il "testo" e il "action command" di un pulsante sono due cose distinte. Il testo è una proprietà specifica del pulsante, il action command è una proprietà specifica del model (ButtonModel) associato al pulsante.

    Il getActionCommand() (quello di JButton) semplicemente ragiona così. Se c'è un action command esplicito, restituisce quello ... altrimenti restituisce il testo del pulsante! Ma sono comunque due concetti separati.

    E dovrebbe valere quanto dicevo prima, non dovresti usare il testo per il test ma un action command specifico.
        private static final String SCEGLI_RIDER_CMD = "scegli-rider";   // testo "tecnico", che l'utente NON vede!!
    
        //...
    
            JButton btnScegliRiders = new JButton("Scegli riders");    // Questo è quello che vede l'utente!
            btnScegliRiders.setActionCommand(SCEGLI_RIDER_CMD);
    
        //...
    
            if (e.getActionCommand().equals(SCEGLI_RIDER_CMD)) { ........
  • Re: Quando premo su annulla o scegli riders non funziona

    andbin ha scritto:


    saraciao ha scritto:


    Un ultima cosa ora ho un bottone con solo l'icona che mi serve per tornare indietro come faccio a richiamarlo nell'actionPerformed? Non posso fare:
    if(e.getActionCommand().equals("nomeBottone"))
    Il "testo" e il "action command" di un pulsante sono due cose distinte. Il testo è una proprietà specifica del pulsante, il action command è una proprietà specifica del model (ButtonModel) associato al pulsante.

    Il getActionCommand() (quello di JButton) semplicemente ragiona così. Se c'è un action command esplicito, restituisce quello ... altrimenti restituisce il testo del pulsante! Ma sono comunque due concetti separati.

    E dovrebbe valere quanto dicevo prima, non dovresti usare il testo per il test ma un action command specifico.
        private static final String SCEGLI_RIDER_CMD = "scegli-rider";   // testo "tecnico", che l'utente NON vede!!
    
        //...
    
            JButton btnScegliRiders = new JButton("Scegli riders");    // Questo è quello che vede l'utente!
            btnScegliRiders.setActionCommand(SCEGLI_RIDER_CMD);
    
        //...
    
            if (e.getActionCommand().equals(SCEGLI_RIDER_CMD)) { ........
    Okay capito ma è corretto fare così usando la tecnica del model view controller?
  • Re: Quando premo su annulla o scegli riders non funziona

    saraciao ha scritto:


    Okay capito ma è corretto fare così usando la tecnica del model view controller?
    Sì, non c'è nulla di strano o sbagliato in questo. E il MVC in realtà non c'entra particolarmente. Sei in una implementazione di ActionListener (non importa ora come/dove è implementato) e più componenti (pulsanti) hanno registrato quello stesso listener. Quindi nel actionPerformed devi determinare chi è la "sorgente" dell'evento (questo, ripeto, non c'entra con il MVC). Ci sono diversi modi:

    1) Confronto dei reference:

    if (e.getSource() == btnPulsante) { .... }
    else if (e.getSource() == btnAltroPulsante) { .... }
    .....

    presupponendo che btnPulsante, btnAltroPulsante, ecc... siano i reference ai pulsanti che bisogna aver mantenuto da qualche parte.

    2) Confronto del actionCommand

    if (e.getActionCommand().equals("blabla") { .... }
    else if (e.getActionCommand().equals("bloblo") { .... }

    La questione è che se su un pulsante NON imposti esplicitamente il actionCommand, per default prende il testo del pulsante! E questa NON è una buona cosa. Il testo potrebbe variare, potrebbe essere "localizzabile" in più lingue o essere caricato dinamicamente da file o altro. Diventa quindi difficile gestire i confronti in questi scenari.
    Allora si imposta un actionCommand esplicito, mettendo tipicamente un testo "tecnico" fisso, insomma, qualcosa che è noto solo alla applicazione, perché tanto nessuno lo "vede"!

    Il fatto di usare delle costanti letterali es.

    private static final String SCEGLI_RIDER_CMD = "scegli-rider";

    è solo per non replicare la stringa in più punti, cosa che potrebbe essere error-prone.
  • Re: Quando premo su annulla o scegli riders non funziona

    andbin ha scritto:


    saraciao ha scritto:


    Okay capito ma è corretto fare così usando la tecnica del model view controller?
    Sì, non c'è nulla di strano o sbagliato in questo. E il MVC in realtà non c'entra particolarmente. Sei in una implementazione di ActionListener (non importa ora come/dove è implementato) e più componenti (pulsanti) hanno registrato quello stesso listener. Quindi nel actionPerformed devi determinare chi è la "sorgente" dell'evento (questo, ripeto, non c'entra con il MVC). Ci sono diversi modi:

    1) Confronto dei reference:

    if (e.getSource() == btnPulsante) { .... }
    else if (e.getSource() == btnAltroPulsante) { .... }
    .....

    presupponendo che btnPulsante, btnAltroPulsante, ecc... siano i reference ai pulsanti che bisogna aver mantenuto da qualche parte.

    2) Confronto del actionCommand

    if (e.getActionCommand().equals("blabla") { .... }
    else if (e.getActionCommand().equals("bloblo") { .... }

    La questione è che se su un pulsante NON imposti esplicitamente il actionCommand, per default prende il testo del pulsante! E questa NON è una buona cosa. Il testo potrebbe variare, potrebbe essere "localizzabile" in più lingue o essere caricato dinamicamente da file o altro. Diventa quindi difficile gestire i confronti in questi scenari.
    Allora si imposta un actionCommand esplicito, mettendo tipicamente un testo "tecnico" fisso, insomma, qualcosa che è noto solo alla applicazione, perché tanto nessuno lo "vede"!

    Il fatto di usare delle costanti letterali es.

    private static final String SCEGLI_RIDER_CMD = "scegli-rider";

    è solo per non replicare la stringa in più punti, cosa che potrebbe essere error-prone.
    okay chiarissimo grazie mille
Devi accedere o registrarti per scrivere nel forum
11 risposte