JPanel Paint nao funciona como eu queria  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

Oi gente, estou com um problema com um JPanel...

Tenho uma serie de objetos a serem desenhados e coloquei o codigo para fazer isso no paintComponent desse JPanel.

Acontece que quando o objeto é desenhado pela primeira vez funciona. Ao arrastar a janela funciona. Ao dar ALT-TAB e voltar nao funciona.

Ao dar ALT-TAB o método paintComponent é chamado, os objetos são desenhados mas a tela fica vazia.... alguma sugestao?

Parte do codigo segue...

Guilherme Silveira


-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
cariocathi
JavaEvangelist
[Avatar]

Membro desde: 30/04/2003 15:03:47
Mensagens: 352
Localização: Rio de Janeiro
Offline

não seria pq qnd vc arrasta ele executa método repaint() ????

GUJ addicted
[MSN] [ICQ]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

e qdo eu dou ALT+TAB ele nao chama o repaint? o q ele chama qdo eu dou ALT+TAB?

e como fazer para repintar quando ele voltar com o ALT+TAB?

vou tentar colocar um window listener com onFocus = repaint.... sera isso?

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
cariocathi
JavaEvangelist
[Avatar]

Membro desde: 30/04/2003 15:03:47
Mensagens: 352
Localização: Rio de Janeiro
Offline

faz algum tempo q não mexo com swing, mas ACHO q o paintComponent é executado uma vez e depois ele só chama o repaint() qnd for necessário redesenhar a janela...

não encare como verdade absoluta pois como faz algum tempo q não brinco com swing, posso estar enganado...

GUJ addicted
[MSN] [ICQ]
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

Cara, não é isso...

pq vc não adiciona os seus shapes como componentes filhos?

Tem umas propriedades do JPanel que vc tem que prestar atenção:

1. size(Dimension): um repaint() só atualiza a área visível do componente. Mas da primeira vez, ele pinta de qq jeito. Se vc desenhou pra fora do tamando do componente da primeira vez, ele pinta, e vc vê o resultado.

2. opaque(boolean) dos filhos: a área visível é o tamanho do componente menos tudo o que está em cima dele e é opaco. Se vc tem filhos opacos, o Swing só desenha os filhos, e pode estar pulando o seu JPanel.

3. tamanho do pai: muitos componentes têm um viewport separado do size, é o caso do JScrollPane por exemplo, a AWT só redesenha o pedaço que está visível. Dependendo do layout que o pai do seu JPanel tem, vc pode não estar recebendo a área inteira.

Outra coisa que vc pode fazer é não pintar o fundo na mão, setar o background pra uma cor nada a ver (eu gosto de Color.CYAN e Color.YELLOW) quando constrói o JPanel e chamar super.paintComponent(g). Assim vc vê o que é que ele tá pintando de verdade...

[]s

Brevity is the soul of wit
[Email] [WWW] [MSN] [ICQ]
dncosta
Thread.start()

Membro desde: 06/05/2004 16:41:58
Mensagens: 31
Localização: São Paulo
Offline

Vc já tentou colocar o seu código dentro do método paint ao invés do paintComponent? Eu já fiz isso algumas vezes e funcionou direito.

Espero ter ajudado .. caso já não de certo me avise para eu ficar sabendo!

[]s
[Email] [ICQ]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team