Ahojte,
robím jeden program do školy. Je to Genetický algoritmus, ktorý produkuje populácie. Všetko čo sa týka výpočtov mám už hotové ale mám problém s vykresľovaním.
Program pracuje tak že najprv náhodne vypočíta prvú populáciu a s nej postupnými úpravami počíta ďalšie. Mám zadefinované koľko vlastne generácií (opakovaní) program vykoná. Potreboval by som však aby program po výpočte nejakej populácie túto populáciu hneď aj vykreslil, mne však program najprv všetko vypočíta a potom až na konci vykresli - ale však už len poslednú populáciu.
Hodnoty, ktoré by som potreboval vykresliť sú uložené v poli poleVykresli[i] - to sa priebežne aktualizuje. Metódu pre vykreslenie som použil paintComponent(Graphics g). Skúšal som rôzne možnosti ako ju volať cez rapaint() v priebehu výpočtu ale nič nefunguje vždy to vykreslí až na konci. Kód je dosť rozsiahli, tak tu zatiaľ tu dávam len tu metódu pre vykreslenie.
Za každú radu dopredu ďakujem.
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
//try {
//Thread.sleep(5000);
//} catch (Exception e) {}
//synchronized (this) {
//}
g.setColor(Color.darkGray);
g.drawLine(0, 275, 1000, 275);
g.drawLine(500, 0, 500, 600);
Polygon polygon = new Polygon();
int q = 0;
try
{
if (pocJedPop.equals(""))
{
q = 1;
} else
{
q = Integer.valueOf(pocJedPop);
}
a = (int) (Double.valueOf(intervalA) * 100);
b = (int) (Double.valueOf(intervalB) * 100);
} catch (Exception e)
{
}
for (int i = a / 5; i <= b / 5; i++)
{
polygon.addPoint(i + 500, 275 - (int) (50 * funkcia));
}
for (int i = 0; i < q; i++)
{
g.setColor(Color.yellow);
int x = poleVykresli[i] / 5;
System.out.print(poleVykresli[i] + ", ");
g.drawLine(x + 500, 275 - (int) (50 * funkcia), x + 500, 275);
}
g.setColor(Color.red);
g.drawPolyline(polygon.xpoints, polygon.ypoints, polygon.npoints);
}