Narysowanie wyniku metody

0

Witam! Tworze swój pierwszy program okienkowy i chciałbym aby zostały wyrysowane wyniki mojej symulacji np. w postaci czarnych kwadratów. Mam stworzoną symulację i nie wiem jak jej wynik przekazać do Graphics g. Próbowałem getterami ale coś mi nie wychodzi.

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;


public class Symulacja1 {

	public Symulacja1(int x, int y, int z, int q) {
		SzataPoczatek x1 = new SzataPoczatek();
	

		// TODO Auto-generated method stub
		Random generator = new Random();

		int osobnik[][] = new int[10 * x][6];
		int powTab[][] = new int[y][y];

		// cehcy osobników
		for (int i = 0; i < x; i++) { // tab 0 to osobnik tak/nie
			osobnik[i][0] = 1;
			osobnik[i][1] = generator.nextInt(10); // wsp pocz X
			osobnik[i][2] = generator.nextInt(10);// wsp pocz Y
			osobnik[i][3] = generator.nextInt(20);
			; // zapas żywności
			osobnik[i][4] = generator.nextInt(2); // płeć
			osobnik[i][5] = generator.nextInt(5); // walory rozrodcze
		}
		for (int i = x; i < x; i++) {
			osobnik[i][0] = 0;
			osobnik[i][1] = 0; // wsp pocz X
			osobnik[i][2] = 0;// wsp pocz Y
			osobnik[i][3] = 0; // zapas żywności
			osobnik[i][4] = 0; // płeć
			osobnik[i][5] = 0; // walory rozrodcze
		}
		System.out.println("OSOBNIKI");
		for (int i = 0; i < osobnik.length; i++) {
			for (int j = 0; j < 5; j++)
				System.out.printf("%3d", osobnik[i][j]);
			System.out.println();
		}
		System.out.println();
		// liczba symulacji
		for (int k = 0; k < 10; k++) {

			for (int i = 0; i < y; i++) {
				for (int j = 0; j < y; j++)
					powTab[i][j] = generator.nextInt(2);
			}
			for (int i = 0; i < powTab.length; i++) {
				for (int j = 0; j < powTab.length; j++)
					System.out.printf("%3d", powTab[i][j]);
				System.out.println();
			}

			System.out.println();
			/*
			 * for (int i = 0; i < 10; i++) {
			 * LosTab[generator.nextInt(10)][generator.nextInt(10)] = 1; }
			 */
			for (int i = 0; i < x; i++) {
				if (osobnik[i][3] == 0) {
					osobnik[i][0] = 0;
				}
			}
			for (int i = 0; i < x; i++) {
				if (osobnik[i][0] == 1) {
					osobnik[i][1] = generator.nextInt(y); // wsp X
					osobnik[i][2] = generator.nextInt(y);// wsp Y
				}
			}
			for (int i = 0; i < x; i++) {
				if (powTab[osobnik[i][1]][osobnik[i][2]] == 1) {
					osobnik[i][3] = osobnik[i][3]++;
					powTab[osobnik[i][1]][osobnik[i][2]] = 0;
				}
			}
			for (int i = 0; i < x; i++) {
				for (int j = 0; j < x; j++) {
					if (osobnik[i][1] == osobnik[j][1]) {
						if (osobnik[i][2] == osobnik[j][2]) {
							if (osobnik[i][4] != osobnik[j][4]){
								if (osobnik[i][5] == osobnik[j][5]){
									x=x+1;
									osobnik[x][0] = 1;
									osobnik[x][1] = generator.nextInt(10); // wsp pocz X
									osobnik[x][2] = generator.nextInt(10);// wsp pocz Y
									osobnik[x][3] = generator.nextInt(20);
									; // zapas żywności
									osobnik[x][4] = generator.nextInt(2); // płeć
									osobnik[x][5] = generator.nextInt(5); // walory rozrodcze
								
							}
						}
							
						}
					}
				}
			}
			for (int i = 0; i < x; i++) {
				osobnik[i][3] = osobnik[i][3] - 1; // zapas żywności

			}
			// rysowanie tych, które przeżyły
		for (int l = 0; l < x; l++) {
				**if (osobnik[l][0] == 1) {
	/*				g.setColor(Color.BLACK);
					g.fillRect((50 + osobnik[l][1] * 50),
							(50 + osobnik[l][2] * 50), 50, 50);*/
**
				}
			

			for (int i = 0; i < z; i++) {
				powTab[generator.nextInt(y)][generator.nextInt(y)] = 1;

			}
			try {

				Thread.sleep(100);

			} catch (InterruptedException e) {
				// Handle exception
			}
		

			
		}
	
		/*
		 * for (int i = 0; i < LosTab.length; i++) { for (int j = 0; j <
		 * LosTab.length; j++) System.out.printf("%3d", LosTab[i][j]);
		 * System.out.println(); }
		 */

		/*
		 * for (int i = 0; i < powTab.length; i++) { for (int j = 0; j <
		 * powTab.length; j++) { if (powTab[i][j] == 1) { g.setColor(Color.RED);
		 * g.fillRect((50 + i * 50), (50 + j * 50), 50, 50);
		 * 
		 * } } }
		 */
int o=0;
		System.out.println("OSOBNIKI PO SYMULACJI");
		
		for (int i = 0; i < x; i++) {
			if (osobnik[i][0]==1){
			for (int j = 0; j < 5; j++)
				System.out.printf("%3d", osobnik[i][j]);
			System.out.println();
			o++;
			}
		}
		System.out.println("osobniki po symulacji" + o);

	}
}


	

Pierwotnie wyglądało to tak, ze miałem wszystko w Graphics g tylko problem był z ustawieniem w symulacji wartości podanych przez użytkownika. Z góry dziękuję za pomoc!

0

Umieść rysowanie w metodzie paintComponent(Graphics g) obiektu typu JPanel.

0

Właśnie tak chciałem zrobić, ale nie mogę utworzyć tam obiektu bez parametrów. Ogólnie chodzi o to aby stworzyć program który:

  1. W jednej klasie pozwala użytkownikowi wpisać danę:
  2. Dane te stają się parametrami metody w innej klasie gdzie zachodzi symulacja
  3. Wynik tej symulacji ma zostać wyrysowany w postaci np. kwadratów. I tutaj mam problem z przekazaniem wyniku tej symulacji (tablicy) w miejsce, gdzie będzie ona wyrysowywana.
0

Np. tak: Symulator ma referencję doRysowacza, a Rysowacz ma referencję do Symulatora. Symulator w odpowiednim momencie wywołuje repaint() dla Rysowacza.
W paintComponent Rysowacza korzystasz z pól w Symulatorze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1