Problemas com desenho de JDialog

Caros,

Estou tendo alguns problemas com a utilização de JDialog.
O meu código em si, está funcionando legal. Está fazendo o que eu necessito.

O problema ocorre quando mando mostrar a JDialog na tela (ela está como modal). Não sei porque, mas o Java não está desenhando corretamente a JDialog.
Por exemplo, se abro a JDialog que fica sobrepondo um JTextField que estava com foco. O JTextField fica aparecendo desenhado na JDialog, assim como o cursor piscando. Se movo a JDialog ela aparenta sumir, só aparece o desenho de alguns componentes quando passo o mouse em cima deles.

Alguém tem alguma idéia do que pode estar acontecendo?

Obrigado
Ronaldo

Você eventualmente não está misturando componentes do Swing e da AWT, está?

ViniGodoy,

Bom os únicos componentess AWT que estou utilizando são os Layouts (CardLayout, BorderLayout), o resto é tudo Swing mesmo.

ViniGodoy,

Bom os únicos componentess AWT que estou utilizando são os Layouts (CardLayout, BorderLayout), o resto é tudo Swing mesmo.

Estranho… você sobrescreveu algum método como paintComponent ou paint?

Tem como você colocar algum código para a gente dar uma olhada?

Amigo, no método construtor do seu JDialog, por último neste método, coloque o seguinte código:

Boa sorte! :wink:

[quote=RenataFA]Amigo, no método construtor do seu JDialog, por último neste método, coloque o seguinte código:

Boa sorte! :wink: [/quote]

Ainda assim, isso não deveria ser necessário. O java deveria pintar corretamente o dialog ao exibi-lo e ajustar o location de acordo com o parent.

ViniGodoy e Renata, Obrigado pela ajuda até agora.

Aparentemente descobri onde ocorre o problema, mas não faço a mínima idéia de como resolver isso.

O problema ocorre quando utilizo o seguinte código para a janela principal:

       if (monitorPrincipal.isFullScreenSupported()) 
            monitorPrincipal.setFullScreenWindow(telaPrincipal);

Se eu utilizo o código ocorre o problema de desenho, se eu não utilizo vai tudo bem.

Acredito que problema de placa de vídeo não seja, pois eu tenho uma ótima placa de video (RADEON X800 256MB de memória).

Vocês teêm alguma idéia de como resolver isto.

Obrigado

Renata, vendo a sua descrição. Você é de Jundiaí??? hahaha eu também.

Oi! Sou sim! :wink:

Então, um colega disse que o java deveria redesenhar sozinho, mas o meu não redesenha! rs… só funciona usando como eu expliquei, talvez por causa do look-and-feel, sei lá!

Sobre isso:

 if (monitorPrincipal.isFullScreenSupported()) 
             monitorPrincipal.setFullScreenWindow(telaPrincipal);

De que tipo é a variável monitorPrincipal?! telaPrincipal é um JFrame né?

monitorPrincipal deve ser um GraphicsDevice.

Você está fazendo um jogo, ou só quer o form em full screen?

Quando você faz isso, passa para o modo de escrita exclusivo. Se sua intenção é ter uma aplicação Swing normal (que não necessite de pintura direta, aceleração, e coisas do tipo), é melhor você deixar o GraphicsDevice de lado (só talvez para alterar a resolução de tela, se for o caso) e usar os seguintes comandos:

telaPrincipal.setUndecorated(true);
telaPrincipal.setExtendedState(JFrame.MAXIMIZED_BOTH);

Caso a sua intenção seja realmente fazer um jogo (ou uma aplicação para edição gráfica), melhor ver como usar corretamente esse recurso no capítulo 4 do livro Killer Game Proggramming in Java, lá ele dá uns exemplos do jogo worms.

Quanto ao Java não repintar um JDialog, no caso de uma aplicação Swing comum: realmente, é estranho. Pode ser que seja o seu look and feel que está desrespeitando a criação normal dos componentes, ou tenha uma má implementação.

Mas o comando de repaint é relativamente automático e independente do LnF e isso realmente não deveria estar acontecendo.

ViniGodoy e Renata,

Obrigado pela, segue os seus conselhos e agora minha aplicacão está funcionando bem.