/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
problem med opdatering af grafik i applet
Fra : cg


Dato : 12-04-02 16:40

jeg har et dobbelt-array på [7][4], som jeg opdaterer for hver gang
der trykkes på 1-6 forskellige knapper. Alt efter hvilken
knap der trykkes på, indsættes der en værdi i dobbeltarrayet,
som initielt har -1 på alle pladser. Efter hvert knap-tryk kalder
jeg også en paint metode i en anden klasse som skal tegne den farve,
som tallet på arrayets position angiver. Denne anden klasse henter
arrayet ned fra den første klasse og svøber to for-løkker rundt
om en switch på dobbelt-arrayet..

således:

for (int i=6;i>-1;i--)
{
for (int j=0;j<3;j++)
{
switch(tst.a[i][j])

Dvs første position den løber igennem er indhold på [6][0], næste er
[6][1] og så fremdeles.

alt efter hvilken talværdi den møder, tegnes en char på en x,y position
på skærmen således:

switch(tst.a[i][j])
{
case -1: g.setColor(Color.gray);
g.drawChars(fst,0,len,x,y); break;
case 0 : g.setColor(Color.black);
g.drawChars(fst,0,1,x,y); break;
case 1 : g.setColor(Color.blue);

osv...

Det er grundstenen til et mastermind spil, der er under udvikling.

Jeg ved ikke hvor meget mere jeg kan forklare lige nu, andet end at
når arrayet opdateres tegnes der IKKE den pågældende char på skærmen.

Jeg kan ikke lige se hvorfor.

PÅ forhånd tak

cg







 
 
Carsten H. Pedersen (13-04-2002)
Kommentar
Fra : Carsten H. Pedersen


Dato : 13-04-02 07:04

> Jeg ved ikke hvor meget mere jeg kan forklare lige nu, andet end at
> når arrayet opdateres tegnes der IKKE den pågældende char på skærmen.
Hejsa.

Jeg fik ikke meget ud af de eksempler du har givet, udover en forståelse for
hvad dit program skal gøre. Så jeg vil da bare gætte på de helt simple ting,
som du garanteret enten har med, men blot undladt i dit uddrag, eller har
prøvet.

Jeg går udfra du laver alt det der g.setColour(...) og g.drawChars(...) sjov
i paint(Graphics g) i den komponent hvor du tegner på. Husker du at kalde
repaint efter du har opdateret dit array?

Jeg havde et lignende problem engang, hvor skærmbilledet flimrede, og det så
ud som om det lige blev tegnet et kort sekund. Jeg fandt aldrig ud af
hvorfor, men hvis jeg selv lavede min paint metode, og fik fat i
komponentens Graphics med getGraphics() og tegnede på den, gik det helt
fint.

Ved nærmere eftertanke, så er det sgu da egentlig for dårligt at jeg ikke
ved hvorfor. Det vil jeg finde ud af.


/Carsten




cg (13-04-2002)
Kommentar
Fra : cg


Dato : 13-04-02 12:17


Hejsa Carsten,

Det gælder for mig at forsøge at bruge getGraphics() det har jeg ikke
forsøgt endnu,
det er helt sikkert en lille detalje der er afgørende.

Hvad angår min paint(), så jo, jeg laver alt det der .. g.setColor() (->Det
er ikke med
ou i color !! <-) og drawChars() sjov.

Jeg har netop snakket med en kammerat om problemet - i og med at jeg
overfører
arrayet som "by value" i min paint metode - foruden Graphics objektet, kan
det være
at nogle af integer-værdierne ikke kommer med. Jeg ved ikke om det er sådan
specielt
i java. Jeg vil forsøge at lave arrayet som en Composite af den klasse, hvor
det er
initialiseret, altså i stedet for at overføre det som værdi, bare hente
værdien i den
øverste klasse, så jeg får et "has a" forhold mellem klasserne.

Jeg kan prøve at forklare hvad programmet skal gøre igen:
et dobbelt array af [7][4] indeholder default værdier på -1 på alle pladser.
Dette array
skal bruges til at tegne Chars på forskellige x,y positioner på skærmen ..
chars'ne skal
være af den farve, som tallet i arrayet repræsenterer .. eks -1 for grå 0
for sort, 1 for blå.
Problemet er at den kun tegner det grå mønster i 7x4 matricen, når den møder
en værdi,
eks 0 tegner den ikke den farve, sikkert pga det med arrayets overførsel og
tab af værdier,
men jeg vil lige sige at jeg har et char array på 4 pladser, hvor jeg har
char-repræsentateion
for et "." punktum liggende. Det er dette array jeg overfører til
drawChars-metoden, hvor den
første værdi skal være en værdi fra et char array.



cg

"Carsten H. Pedersen" <ged@mail.ikasths.dk> wrote in message
news:a98hnu$mja$1@news.net.uni-c.dk...
> > Jeg ved ikke hvor meget mere jeg kan forklare lige nu, andet end at
> > når arrayet opdateres tegnes der IKKE den pågældende char på skærmen.
> Hejsa.
>
> Jeg fik ikke meget ud af de eksempler du har givet, udover en forståelse
for
> hvad dit program skal gøre. Så jeg vil da bare gætte på de helt simple
ting,
> som du garanteret enten har med, men blot undladt i dit uddrag, eller har
> prøvet.
>
> Jeg går udfra du laver alt det der g.setColour(...) og g.drawChars(...)
sjov
> i paint(Graphics g) i den komponent hvor du tegner på. Husker du at kalde
> repaint efter du har opdateret dit array?
>
> Jeg havde et lignende problem engang, hvor skærmbilledet flimrede, og det

> ud som om det lige blev tegnet et kort sekund. Jeg fandt aldrig ud af
> hvorfor, men hvis jeg selv lavede min paint metode, og fik fat i
> komponentens Graphics med getGraphics() og tegnede på den, gik det helt
> fint.
>
> Ved nærmere eftertanke, så er det sgu da egentlig for dårligt at jeg ikke
> ved hvorfor. Det vil jeg finde ud af.
>
>
> /Carsten
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste