Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    218

    [JAVA] - Interagire tra classi differenti

    Sto facendo un progetto e per utilizzarlo al meglio ho creato diverse classi contenenti dei pannelli sui quali avvengono delle operazioni.

    Ho queste classi:
    BounceGame-->Classe Main
    AddParticles-->Classe col pannello sul quale devo fare operazioni
    Environment--> classe a scatola chiusa che crea un ambiente. Devo usare funzioni di questa classe.

    L'ambiente viene creato tramite BounceGame ridefinendo la classe environment tramite la classe environmentPanel e creando un oggetto di quest'ultima classe in BounceGame appunto.

    In AddParticles devo usare funzioni contenute nella classe environment. Come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Passi enviroment nel costruttore di AddParticles.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    218
    Fatto ma mi genera errori...
    Environment crea un ambiente e gli devo passare le dimensioni. Ne ho creato uno di (0,0,0,0) e ho usato le funzioni. Errori non ne da però non fa nulla perchè utilizza le funzioni su quest'ultimo environment invece che sull'environment di bouncegame che è quello principale...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non hai capito, passi l'enviroment di BounceGame nel costruttore, non uno nuovo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    218
    Illegal Forward Reference.
    L'errore che mi da.
    Puoi farmi un esempio di quello che dici? Magari ho sbagliato a scriverlo...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Facciamo prima se tu posti il codice che ti da errore.
    Serve la parte di BounceGame che solleva l'eccezione e il costruttore di AddParticles.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    218
    codice:
     import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    
    public class AttractorsPanel extends JPanel{
    		
    		Environment env=new Environment(0,0,0,0);
    		Methods funz=new Methods();
    		
    		JPanel attPanel=new JPanel(new GridLayout(9,1));
    		JPanel flow1=new JPanel();
    		JPanel flow2=new JPanel();
    		JPanel flow3=new JPanel();
    		JPanel flow4=new JPanel();
    				
    		JButton addAttWall=new JButton("Attrai verso muro");		
    		JButton addAttPoint=new JButton("Attrai verso punto");
    		
    		ButtonGroup attgroup=new ButtonGroup();
    		JRadioButton singleball=new JRadioButton("Singola", true);
    		JRadioButton doubleball=new JRadioButton("Doppia");
    		JRadioButton breakerball=new JRadioButton("Dirompente");
    		JRadioButton allball=new JRadioButton("Tutte");
    		
    		ButtonGroup attwalls=new ButtonGroup();
    		JRadioButton north=new JRadioButton("Sopra", true);
    		JRadioButton south=new JRadioButton("Sotto");
    		JRadioButton west=new JRadioButton("Sinistra");
    		JRadioButton east=new JRadioButton("Destra");
    		
    		JLabel attperlab=new JLabel("% di attrazione:");
    		JLabel xlab=new JLabel("X:");
    		JLabel ylab=new JLabel("Y:");
    		
    		JTextField attper=new JTextField("20", 3);
    		JTextField xfield=new JTextField("0", 4);
    		JTextField yfield=new JTextField("0", 4);
    		
    	public AttractorsPanel(EnvironmentPanel env){
    		
    		
    		attgroup.add(singleball);
    		attgroup.add(doubleball);
    		attgroup.add(breakerball);
    		attgroup.add(allball);
    		
    		attwalls.add(north);
    		attwalls.add(south);
    		attwalls.add(west);
    		attwalls.add(east);
    		
    		flow1.add(singleball);
    		flow1.add(doubleball);
    		flow1.add(breakerball);
    		flow1.add(allball);
    		
    		flow2.add(attperlab);
    		flow2.add(attper);
    		
    		
    		flow3.add(addAttWall);
    		addAttWall.addActionListener(atl);
    		flow3.add(north);
    		flow3.add(south);
    		flow3.add(east);
    		flow3.add(west);
    		
    		flow4.add(addAttPoint);	
    		addAttPoint.addActionListener(atl);	
    		flow4.add(xlab);		
    		flow4.add(xfield);		
    		flow4.add(ylab);		
    		flow4.add(yfield);
    		
    		attPanel.add(flow1);
    		attPanel.add(flow2);
    		attPanel.add(flow3);
    		attPanel.add(flow4);
    		
    		add(attPanel);
    		setVisible(true);
    		}
    	
    	public class attListener implements ActionListener{
    			public void actionPerformed(ActionEvent e){
    			int perc=Integer.parseInt(attper.getText());
    			int wall=funz.controllaRadioB1(north, south, west, east);
    			int type=funz.controllaRadioB1(singleball, doubleball, breakerball, allball);
    			PairOfDouble coord=null;
    			coord.x=Integer.parseInt(xfield.getText());
    			coord.y=Integer.parseInt(yfield.getText());
    				
    			
    				if(e.getSource()==addAttWall && type!=3){
    					env.attract(wall, perc, type);
    					}
    				else if(e.getSource()==addAttWall && type==3){
    					env.attract(wall, perc);
    					}
    				else if(e.getSource()==addAttPoint && type!=3){
    					env.attract(coord, perc, type);
    					}
    				else if(e.getSource()==addAttPoint && type==3){
    					env.attract(coord, perc);
    					}
    			}
    				
    	}
    	attListener atl=new attListener();
    }
    L'errore me lo genera:
    codice:
    	AttractorsPanel attP=new AttractorsPanel(plancia);

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    codice:
    public class AttractorsPanel extends JPanel{
       private Environment env;
       //ALTRO CODICE
    	
       public AttractorsPanel(EnvironmentPanel env){
          this.env = env;
    
    //Altrimenti e' inutile passarglielo se poi continui ad usarne uno nuovo.
    Plancia di che tipo e'?
    Puoi postare tutta l'eccezione?

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    218
    Plancia è di tipo EnvironmentPanel, che a sua volta è di tipo Environment. L'eccezione è:

    Illegal Forward Reference

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non ti dice altro? Posta tutta la classe che da eccezione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.