JMenuBar desenhando em baixo das outras coisas

7 respostas
G

Ok, to fazendo uma interface grafica de edição de missões para meu jogo e estou tendo problemas com o JMenuBar como segue na imagem. Não consigo fazer o menu desenhar e aceitar eventos de mouse por cima do maldito awt.label e tem o Canvas no frame da direita que tambem desenha por cima…

alguem ja teve disso?


7 Respostas

ViniGodoy

E então Moisés desceu do monte Sinai, carregando a tábua com 11 mandamentos. O décimo primeiro, que se perdeu nos anos devido a incapacidade da época de compreende-lo dizia:
“Não misturarás AWT com Swing!”

Use um JLabel, não um java.awt label.
Não use o Canvas, no lugar, use o JComponent.

ViniGodoy

Para mais informações:
http://java.sun.com/products/jfc/tsc/articles/mixing/
http://www.devx.com/tips/Tip/14718
http://www.joelduffin.com/blog/2008/04/03/mixing-awt-and-swing-is-no-fun/

G

eh, o esquema do label funcionou, mas eu preciso usar um canvas para imprimir uma imagem naquela tela a cada 20 milisegundos…

a n ser que tenha como usar BufferStrategy sem usar canvas =/

ViniGodoy

Todos os componentes do Swing são double-buffered por default, você não precisa controlar o BufferStrategy explicitamente:
http://java.sun.com/products/jfc/tsc/articles/painting/#paint_process

Aliás, só tem sentido em controlar o BufferStrategy se você não for atualizar uma porção da tela, e sim a tela toda. Como você está falando em loops de 20ms, o ideal seria você criar uma visualização full screen usando o FSEM, que utilizaria não só o Double Buffer, como o recurso de page flipping e muito mais aceleração de vídeo.

Agora, para que uma taxa de atualização tão alta num editor de missões? Para o game em si eu até entendo…

G

a ideia original era como aparece na imagem, o mapa do jogo onde se passa a missão é renderizado no frame da direita, e com os botões da esquerda eu adiciono defesas ou npcs pelos seus codigos (o retangulo branco eh uma defesa). E a quantia de refresh “alta” eh pra n ter que fazer controle nenhum quando mexo nos sliders para dar scroll no mapa da missão, soh pega a imagem e plota no canvas baseado na posição dos scrolls

no caso ja esta funcionando, mas o jmenu desenha por baixo da imagem =/


ViniGodoy

Não precisa fazer controle nenhum com os scrolls. O próprio JScrollPane costuma a controlar isso para você. Basta definir um PreferredSize no seu JComponent.
Não é necessário um Animation Loop para isso. É só sobrescrever o PaintComponent para fazer o desenho direito e ser feliz. :slight_smile:

No meu site, clique veja os meus dados. Lá tem um artigo com os meus jogos. E lá você pode baixar o caça à bandeira. Nesse jogo, existe um editor de mapa, que inclusive suporta scroll. Dê uma olhada.

G

vlw!

consegui fazer o desenho sobre o JPane, entretanto tenho que chamar o metodo Repaint o tempo todo, nada muito diferente da maneira que eu usava antes para desenhar no Canvas, felizmente agora o JMenu desenha em cima do JPane como pretendido!

Criado 14 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 7
Participantes 2