JAVA-ban kérnék segítséget!? Többi lent!
Egy Paint szerű programot kell készítenem JAVA nyelven, viszont problémába ütköztem, és sehogy sem tudom megoldani. Rajzolás közben ha az alakzatok között váltok, akkor a már előre a "toll"-al megrajzolt dolgok eltűnnek, ha a "kör"-re váltok, a jPanel1.update(lap) miatt. Hogyan lehet a toll-által megrajzoltakat elmenteni, hogy a lap újratöltésnél ne tűnjön el? Előre is köszönöm a válaszokat!
if (alakzat=="kör"){
jPanel1.update(lap);
x2=evt.getX() - x1;
y2=evt.getY() - y1;
circbuffer = new Ellipse2D.Float((float)x1,(float)y1,(float)x2,(float)y2);
drawall();
lap.draw(circbuffer);
}
if (alakzat=="toll"){
x1=evt.getX();
y1=evt.getY();
lap.drawLine(x2,y2,x1,y1);
x2=x1;
y2=y1;
}
String-et nem ==-vel hasonlítunk, hanem equals()-al.
Ehelyett: alakzat=="kör"
Így: "kör".equals(alakzat)
(Nem biztos, hogy a fő kérdésedre válaszol, de ez mindenképpen hiba volt.)
a kirajzolni való dolgokat folyamatosan egy lista végére fűzöd, a kirajzoló rutinban meg csak a listán végig iterálva kirajzolsz mindent.
legjobb lenne nem mindig explicite meghívni ezeket, hanem létrehozni egy saját JPanel osztály pl, amiben felülírod a paint metódust, és abban rajzolod ki a lista minden elemét. így ha elmozgatod az ablakot pl a képernyőn kívülre majd vissza, akkor is ki fog rajzolni mindent automatikusan, neked meg csak a listába bele rakosgatni az elemeket
a lista lehet pl egy ArrayList<Drawable>, ahol a Drawable egy interfész, aminek van pl egy void draw(Graphics2D g) metódusa, és csinálsz pl Line és Circle osztályokat, amik implementálják az interfészt
JPanel paintjében csak végig iterálsz a listán és végig hívod mindre a draw metódust, az egér esemény kezelőjében meg a lista végére addolod az alakzatnak megfelelően egy új Line vagy Circle objektumot
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!