Domanda ?

di il
8 risposte

Domanda ?

Ragazzi, una domanda, è possibile utilizzare un oggetto in una classe però istanziato in un'altra classe? Mi spiego meglio, ho l'oggetto lista istanziato nella classe A, posso utilizzare l'oggetto lista nella classe B?

8 Risposte

  • Re: Domanda ?

    Si, No, Boh.
    Dipende da come la classe A e la classe B lavorano insieme e da cosa vogliono fare.
  • Re: Domanda ?

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		ListaConsumazioni lista = new ListaConsumazioni();
    		
                    JFrame f = new JFrame("Gestione consumazioni");
    		JPanel p = new JPanel();
    		JButton registra = new JButton("Registra");
    		registra.setAlignmentX(Component.CENTER_ALIGNMENT);
    		
    		JLabel ltipoconsumazione = new JLabel("Tipo Consumazione");
    		ltipoconsumazione.setAlignmentX(Component.CENTER_ALIGNMENT);
    		JTextField tipo = new JTextField(2);
    		tipo.setAlignmentX(Component.CENTER_ALIGNMENT);
    		JLabel lprezzo = new JLabel("Prezzo consumazione");
    		lprezzo.setAlignmentX(Component.CENTER_ALIGNMENT);
    		JTextField prezzo = new JTextField(2);
    		prezzo.setAlignmentX(Component.CENTER_ALIGNMENT);
    		
    		JTextArea a = new JTextArea(15,5);//qui verrà visualizzato lo scontrino
    		JTextArea b = new JTextArea(15,5);//qui verranno visualizzati tutte le consumazioni
    		JScrollPane scroll=new JScrollPane(b);//aggiunge lo scroll al campo di testo
    		a.setEditable(false);
    		b.setEditable(false);
    		scroll.setAutoscrolls(true);
    		
    		JLabel ltotale = new JLabel("Incasso totale:");
    		JTextArea c = new JTextArea(1,4);
    		c.setEditable(false);
    		
    		//sul jpanel p verrà implementato uno stile
    		p.setLayout(new FlowLayout());
    		p.add(new JLabel("Gestione Bar"));
    		
    		JPanel p2 = new JPanel();
    		p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
    		p2.add(ltipoconsumazione);
    		p2.add(tipo);
    		p2.add(lprezzo);
    		p2.add(prezzo);
    		p2.add(registra);
    		
    		JPanel p3 = new JPanel();
    		p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
    		p3.add(new JLabel("Scontrino fiscale precedente:"));
    		p3.add(a);
    		
    		JPanel p4 = new JPanel();
    		p4.setLayout(new BoxLayout(p4, BoxLayout.Y_AXIS));
    		p4.add(new JLabel("Lista consumazioni totali"));
    		p4.add(scroll);
    		
    		JPanel p5 = new JPanel();
    		p5.setLayout(new FlowLayout());
    		p5.add(ltotale);
    		p5.add(c);
    		
    		registra.addActionListener(new GestorePulsante(a,b,tipo,prezzo,c));
    		f.addWindowListener(new GestoreFinestra());
    		f.getContentPane().add(p,BorderLayout.NORTH);
    		f.getContentPane().add(p2,BorderLayout.WEST);
    		f.getContentPane().add(p3,BorderLayout.CENTER);
    		f.getContentPane().add(p4,BorderLayout.EAST);
    		f.getContentPane().add(p5,BorderLayout.SOUTH);
    		f.setSize(400,400);
    		f.setLocation(500,300);
    		f.pack();
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		f.setVisible(true);
    		
    	}
    
    }
    
    in questa classe istanzio l'oggetto lista, poi nel momento in cui premo il bottone passo nella classe GestorePulsante
    public class GestorePulsante implements ActionListener {
    	
    	private JTextField tipo;
    	private JTextField prezzo;
    	private JTextArea scontrino;
    	private JTextArea listaconsumazioni;
    	private JTextArea guadagnototale;
    	
    	public GestorePulsante(JTextArea a,JTextArea b,JTextField tipo,JTextField prezzo,JTextArea c){
    		this.tipo=tipo;
    		this.prezzo = prezzo;
    		this.scontrino = a;
    		this.listaconsumazioni = b;
    		this.guadagnototale = c;
    	}
    
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		Double p = Double.parseDouble(prezzo.getText());
    		Consumazione consumazione = new Consumazione(tipo.getText(),p);
    		lista.InserisciInLista(consumazione); //qui mi da errore
    	
    	}
    	
    
    }
    
    e in questa classe mi da errore nel momento in cui chiamo lista..
  • Re: Domanda ?

    E' tutto molto confuso.
    Quando crei GestorePulsante passagli l'oggetto lista nel costrutture.
    Ovviamente dei modificare il costruttore di GestorePulsante
  • Re: Domanda ?

    xneo ha scritto:


    E' tutto molto confuso.
    Quando crei GestorePulsante passagli l'oggetto lista nel costrutture.
    Ovviamente dei modificare il costruttore di GestorePulsante
    va bene ho modificato ma non cambia nulla
    public GestorePulsante(JTextArea a,JTextArea b,JTextField tipo,JTextField prezzo,JTextArea c,ListaConsumazioni lista){
    		this.tipo=tipo;
    		this.prezzo = prezzo;
    		this.scontrino = a;
    		this.listaconsumazioni = b;
    		this.guadagnototale = c;
    	}
    più che altro io istanzio l'oggetto lista nella classe Bar perchè nella lista devo allocare tutte le consumazioni.. quindi non potrei instanziare l'oggetto lista nella classe GestionePulsante altrimenti ad ogni click sul pulsante creerei una nuova lista.. no?
  • Re: Domanda ?

    Non succede nulla perchè ti devi salvare il riferimento alla lista nella classe GestorePulsante.
    private ListaConsumazioni lista;
    e poi nel costruttore:
    this.lista=lista.
    più che altro io istanzio l'oggetto lista nella classe Bar perchè nella lista devo allocare tutte le consumazioni.. quindi non potrei instanziare l'oggetto lista nella classe GestionePulsante altrimenti ad ogni click sul pulsante creerei una nuova lista.. no?
    Esatto, infatti non c'è nessuna istanziazione della lista in GestorePulsante.
  • Re: Domanda ?

    Infatti ho appena fatto così..
    public class GestorePulsante implements ActionListener {
    	
    	private JTextField tipo;
    	private JTextField prezzo;
    	private JTextArea scontrino;
    	private JTextArea listaconsumazioni;
    	private JTextArea guadagnototale;
    	private ListaConsumazioni l;
    	
    	public GestorePulsante(JTextArea a,JTextArea b,JTextField tipo,JTextField prezzo,JTextArea c,ListaConsumazioni lista){
    		this.tipo=tipo;
    		this.prezzo = prezzo;
    		this.scontrino = a;
    		this.listaconsumazioni = b;
    		this.guadagnototale = c;
    		this.l = lista;
    	}
    
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		Double p = Double.parseDouble(prezzo.getText());
    		Consumazione consumazione = new Consumazione(tipo.getText(),p);
    		l.InserisciInLista(consumazione);
    	
    	}
    	
    
    }
    quindi facendo così posso andar tranquillo?
  • Re: Domanda ?

    quindi facendo così posso andar tranquillo?
    Se ti rispondessi: -"Si, tranquillo al 100%"- ti starei prendendo in giro.
  • Re: Domanda ?

    Come hai detto tu va benissimo, ho verificato, grazie
Devi accedere o registrarti per scrivere nel forum
8 risposte