/ Forside/ Teknologi / Udvikling / Java / Spørgsmål
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
Newbie og drawImage
Fra : stk
Vist : 571 gange
50 point
Dato : 19-12-01 11:24

Hejsa. Jeg er ved at lave en applikation med en jMenuBar. Menuen er blevet som den skal være, og nu vil jeg gerne have et baggrundsbillede. I klassens konstruktør har jeg tilføjet linierne:
toolkit = getToolkit();
image = toolkit.getImage("jul.jpg")
I selve klassen har jeg tilføjet paint metoden:
public void paint(Graphics gr){
gr.drawImage(image, 0, 0, this);}

Det virker også fint. Lige botset fra at menuen forsvinder. Jeg har også prøvet at flytte billedet lidt ned, men ligefedt hjælper det. Hvad gør jeg forkert?

mvh Stefan


 
 
Accepteret svar
Fra : Nyhedsbruger

Modtaget 50 point
Dato : 19-12-01 13:58


> Hejsa. Jeg er ved at lave en applikation med en jMenuBar. Menuen er
> blevet som den skal være, og nu vil jeg gerne have et baggrundsbillede.
> I klassens konstruktør har jeg tilføjet linierne:
> toolkit = getToolkit();
> image = toolkit.getImage("jul.jpg")
> I selve klassen har jeg tilføjet paint metoden:
> public void paint(Graphics gr){
> gr.drawImage(image, 0, 0, this);}
>
> Det virker også fint. Lige botset fra at menuen forsvinder. Jeg har også
> prøvet at flytte billedet lidt ned, men ligefedt hjælper det. Hvad gør
> jeg forkert?

Hej Stefan

prøv at tilføje linjen "[jMenuBar-objekt].repaint();" i paint så den får
følgende udseende:

public void paint(Graphics gr){
gr.drawImage(image, 0, 0, this);
menu.repaint(); //antager her at dit jMenuBar objekt er kaldt menu
}

problemet er at paint() funktionen gentegner hele billedet forfra og derfor
skal menuen repaintes.

Håber det virker

Hansen



Godkendelse af svar
Fra : stk


Dato : 19-12-01 14:18

Det virker. Jeg er jo en VB spasser, der er vant til at få såddan nogle banaliteter forærende af systemet
Go' jul.
stefan                        

Kommentar
Fra : stk


Dato : 19-12-01 14:23

Hmm... Der var jeg lidt for hurtig. Både billede og menu bliver vist fint nok. Men menupunkterne blive vist _bag_ billedet. Knapt så fedt når det skal være et baggrundsbillede...
Kan man sætte noget layer eller lignende?
stefan

Kommentar
Fra : Nyhedsbruger


Dato : 19-12-01 14:33

stk wrote:

> Det virker. Jeg er jo en VB spasser, der er vant til at få såddan
nogle
> banaliteter forærende af systemet

Det er sådan nogle "banaliteter" som gør at man ikke gider programmere
i VB, for så har man ikke selv fuld kontrol. Det kunne jo ske at man
engang fik brug for at den _ikke_ repaintede af sig selv.

> Go' jul.

I lige måde...

Mvh.
Martin Ehmsen (som også selv har programmeret i VB i sine unge dage)
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson

Kommentar
Fra : stk


Dato : 19-12-01 14:55

> Det er sådan nogle "banaliteter" som gør at man ikke gider programmere
> i VB, for så har man ikke selv fuld kontrol. Det kunne jo ske at man
> engang fik brug for at den _ikke_ repaintede af sig selv.
Nu er jeg jo evigt nysgerrig. Kan du komme med et (simpelt) eksempel?
stefan

Kommentar
Fra : Nyhedsbruger


Dato : 19-12-01 16:02

stk wrote:

>> Det er sådan nogle "banaliteter" som gør at man ikke gider
programmere
>
>> i VB, for så har man ikke selv fuld kontrol. Det kunne jo ske at man
>> engang fik brug for at den _ikke_ repaintede af sig selv.
> Nu er jeg jo evigt nysgerrig. Kan du komme med et (simpelt) eksempel?
> stefan

Måske ikke lige i det tilfælde (ikke noget jeg selv har været ude
for...) men jeg vil kunne komme med en alen lang list over ting du kan
lave i fx Java som du ikke kan lave i VB.
Fx hvis du vil have et helt vindue til at være et billede, altså uden
title-bjælken, så er det udfatteligt let i Java, men umuligt i VB.

Mvh.
Martin Ehmsen
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson

Kommentar
Fra : stk


Dato : 19-12-01 17:26

> Måske ikke lige i det tilfælde (ikke noget jeg selv har været ude
> for...) men jeg vil kunne komme med en alen lang list over ting du kan
> lave i fx Java som du ikke kan lave i VB.
Det er jeg ikke i tvivl om. Men det kræver også mere af programmøren.

> Fx hvis du vil have et helt vindue til at være et billede, altså uden
> title-bjælken, så er det udfatteligt let i Java, men umuligt i VB.
Bårp, bårp, bårk ikk'. ControlBox = False løser _det_ problem

For nu at vende tilbage til Java: Hvad med en lille forklaring på hvornår show, paint, repaint ol. forekommer? Jeg har som nævnt min menu og et billede. Når jeg trykker på et menupunkt i baren, vises listen af pankter bag ved billedet, men hvis jeg fører musen hen over et af underpunkterne, tegnes de foran billedet...
stefan

Kommentar
Fra : Nyhedsbruger


Dato : 19-12-01 22:06

stk wrote:
> For nu at vende tilbage til Java: Hvad med en lille forklaring på
> hvornår show, paint, repaint ol. forekommer? Jeg har som nævnt min
menu
> og et billede. Når jeg trykker på et menupunkt i baren, vises listen
af
> pankter bag ved billedet, men hvis jeg fører musen hen over et af
> underpunkterne, tegnes de foran billedet...

Jeg vil foreslå dig at læse i API'en, der står det hele faktisk ret
godt:
Læs: java.awt.Container's paint()
Læs: java.awt.Component's repaint()

API'en er din ven...

Mvh
Martin Ehmsen
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson

Kommentar
Fra : Nyhedsbruger


Dato : 20-12-01 00:09

"Martin Ehmsen" <thames@get2net.dk> wrote in message
news:9vqveb$1rm$1@sunsite.dk...
> stk wrote:
> Jeg vil foreslå dig at læse i API'en, der står det hele faktisk ret
> godt:
> Læs: java.awt.Container's paint()
> Læs: java.awt.Component's repaint()
>
> API'en er din ven...

Nixen! - Jeg bliver ofte uvenner med den! ;)
/Brian Matzon



Kommentar
Fra : Nyhedsbruger


Dato : 20-12-01 12:40

Brian Matzon wrote:
>> API'en er din ven...
>
> Nixen! - Jeg bliver ofte uvenner med den! ;)

Men hvis man ikke har andre venner er den da god nok (jeg taler _ikke_
af erfaring)...

Martin
--
"Life is good for only two things,
discovering mathematics and teaching mathematics"
Siméon Poisson

Kommentar
Fra : stk


Dato : 20-12-01 13:04

Skal vi ikke gå på kompromis og sige at den _kan_ være et rart bekendtskab? Men jeg kan ikke gennemskue mit problem alligevel. Jeg har forsøgt med

public paint(Graphics gr){
super.paint(gr);
gr.drawImage(image, 0, 80, this);}

Men så blive billedet tegnet oven på mine JMenu'er (logisk nok, når billedet tegnes efter menuen?)
Hvis jeg bytter om på de to sætningerm vises billedet ikke, da det bliver slættet af super.paint()?.

Skal jeg implementere noget repaint i en actionListener i JMenu eller JMenuItem eller noget helt tredie?
stefan

Kommentar
Fra : stk


Dato : 21-12-01 14:54

> public void paint(Graphics gr){
> gr.drawImage(image, 0, 0, this);
> menu.repaint(); //antager her at dit jMenuBar objekt er kaldt menu
> }
Det var den ene del af det. Den anden del er, at menuen skal gøres til 'heavyweight' for at kunne vises oven på et billede: http://java.sun.com/products/jfc/tsc/articles/mixing/index.html

stefan

Kommentar
Fra : Nyhedsbruger


Dato : 21-12-01 15:11

After I finished the 3 Pan Galactic Gargle Blasters, "stk"
<stk.news@kandu.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>Det var den ene del af det. Den anden del er, at menuen skal gøres til
>'heavyweight'

huh? - Hvorfor ikke bare tegne menuen oven på?
--
Martin Mouritzen.
The truth is out there! Does anyone know the URL?

Kommentar
Fra : stk


Dato : 02-01-02 10:25

Det kan man ikke. Eller rettere sagt: Resultatet er uacceptabelt. De enkelte menupunkter bliver først tegnet, når musen føres hen over dem, og baggrunden bliver ikke tegnet.
stefan

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste