Salve a tutti, premetto che non ho al momento ampie conoscenze con questo linguaggio di programmazione, in quanto lo sto studiando da circa un anno a scuola (frequento il quinto anno di Informatica), e un po' a casa da autodidatta.


Il programma che ho realizzato è basato semplicemente su 3 classi:


-creaOggetti (Main e creazione Oggetti)
-Processo (classe che richiamo all'esecuzione del Thread per avviare il programma )
-Oggetto (classe nella quale disegno l'oggetto, in questo caso ovali e ne definisco le caratteristiche)


In sostanza lo scopo del programma è creare degli ovali sullo schermo, e farli muovere.
Creando manualmente uno, due, tre o piu' oggetti, il programma funziona benissimo, mi crea gli oggetti e li disegna sullo schermo e si muovono, ma nel momento in cui rendo "Dinamica" la cosa, creando un vettore di oggetti, essi non compiono piu' sullo schermo, penso sia dovuto al fatto che non riesce a disegnarli ma non so per quale ragione.


Ecco il codice:


Classe Processo (non penso proprio sia qui il problema):


codice:
package oggetto;


public class Processo implements Runnable {
	
	creaOggetti Elemento = new creaOggetti();


	
	@Override
	public void run() {
		Elemento.crea();
		while(true){
			try {
                Elemento.movimento();
				Elemento.repaint();
				Thread.sleep(15);
				
			} catch (InterruptedException e) {
				
				e.printStackTrace();
				
			}
		}
		
	}


}

Classe Oggetto:


codice:
package oggetto;


import java.awt.Color;
import java.awt.Graphics2D;


public class Oggetto {
	
	int WIDTH, HEIGHT, x = 0, y = 0;
	final int asseX; //Asse X di partenza
	final int asseY; //Asse Y di partenza
	
	//Costruttori
	Color colore=Color.ORANGE;
	public Oggetto ovale;


	public Oggetto(Oggetto cerchio, int x, int y, int WIDTH, int HEIGHT) {
		this.ovale=(cerchio);
		this.x = x;
		this.y = y;
		this.WIDTH = WIDTH;
		this.HEIGHT = HEIGHT;
		asseX=x;
		asseY=y;
	}


	void sposta(int larghezzaFinestra, int altezzaFinestra) {
		
		System.out.print("\nX = "+x+" Y = "+y);
		
		if ( x >= asseX && x < (larghezzaFinestra-(this.WIDTH+asseX)) ) x++; //Larghezza finestra - Coordinata di partenza X = DIAMETRO
		else x = asseX; //X di partenza
		
		if(x>=this.WIDTH && x<=larghezzaFinestra/2) y++;
		else if (y>=((altezzaFinestra/2))) y=asseY;


		
	}


	public void paint(Graphics2D g) {
		g.setColor(this.colore);
		g.fillOval(x, y, WIDTH, HEIGHT);
	}
}

Classe creaOggetti (penso sia nel print l'errore):


codice:
package oggetto;


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;


import javax.swing.JFrame;
import javax.swing.JPanel;


@SuppressWarnings("serial")


public class creaOggetti extends JPanel {
  
   public static int h;
   public static int w;
   final int MAX_OGGETTI=2;


  
   /*
	Oggetto cerchio0=new Oggetto(this.cerchio0,20,50,100,100, Color.RED);
	Oggetto cerchio1=new Oggetto(this.cerchio1,20,200,100,100,Color.ORANGE);
	Oggetto cerchio2=new Oggetto(this.cerchio1,20,350,100,100,Color.GREEN);
    */
   
	
    Oggetto[] cerchio = new Oggetto[MAX_OGGETTI];
	InputStreamReader input = new InputStreamReader(System.in); // Flusso di byte
	BufferedReader tastiera = new BufferedReader(input); // Flusso di caratteri
    
	public void crea(){
		
		 int X=0,Y=0,W=0, H=0;


		for(int i=0; i<MAX_OGGETTI; i++){
			
			try {
				
				System.out.print("Inserisci l'asse X di partenza dell'oggetto -> ");
				X = Integer.parseInt(tastiera.readLine());
				
				System.out.print("Inserisci l'asse Y di partenza dell'oggetto -> ");
				Y=Integer.parseInt(tastiera.readLine());
				
				System.out.print("Inserisci la larghezza dell'oggetto -> ");
				W=Integer.parseInt(tastiera.readLine());
				
				System.out.print("Inserisci l'altezza dell'oggetto -> ");
				H=Integer.parseInt(tastiera.readLine());
				
				cerchio[i]=new Oggetto(cerchio[i],X,Y,W,H);
				
			} catch (NumberFormatException | IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}


			
			
		}
	}
	
	public void movimento() {
		for(int i=0;i<MAX_OGGETTI; i++) cerchio[i].sposta(h,w);
	}


	public void paint(Graphics2D[] g) {
		
		g=new Graphics2D[MAX_OGGETTI];
		Graphics2D[] g2d = new Graphics2D[MAX_OGGETTI];
		
	for(int i=0;i<MAX_OGGETTI; i++){
		
		super.paint(g[i]);
		g2d[i]=(Graphics2D) g[i];
		cerchio[i].paint(g2d[i]);
	}
	
}
	
	
	public static void main(String[] args) throws InterruptedException  {
		
	
		
		JFrame frame= new JFrame("Processo");
		frame.setSize(800, 600);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Rectangle r = frame.getBounds();
		h = r.height;
		w = r.width;
		
		Processo proc0=new Processo();
		Thread p1=new Thread(proc0);
		
		frame.add(proc0.Elemento); //Aggiungo gli oggetti JPanel al FRAME
		frame.setVisible(true);
		
		p1.start(); //Avvio il Thread
	}
}

Spero di poter risolvere al piu' presto, intanto vi ringrazio in anticipo!


Non compaiono gli oggetti sullo schermo !