Interface Gráfica e Multithreading: um grande problema pela frente  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Olá amigos,

Minha dúvida se divide em diversas outras, então vou focar nas principais. Tenho um trabalho para a faculdade onde devo fazer um simulador de Sistema Operacional. A lógica do programa já está feita, mas a interface gráfica está sendo *o* problema. Devo representar diversos elementos que compõem o sistema operacional e outros elementos do computador de forma gráfica; por exemplo, a memória deve ser o desenho de uma caixa com algumas divisões, e cada divisão sendo um espaço da memória. Daí surgem diversos dúvidas:

- Como fazer elementos gráficos ficarem sempre do mesmo tamanho (tanto painéis quanto o frame principal que exibirá o simulador)?
- Como atualizar, através do uso de threads, esses elementos gráficos? Já fiz algumas aplicações GUI com Multithreading mas nada que beirasse a complexidade dos elementos desse trabalho (deve haver no mínimo 10 elementos gráficos a serem desenhados, especialmente filas).
- Como fazer um (ou mais) painel(éis) ocupar(em) uma posição específica, sem que ele(s) possa(m) ser redimensionado(s)?

Se alguém puder me envie um exemplo ou código que exemplifique principalmente o uso de threads (principalmente em casos onde a interface é atualizada pelo uso de uma thread).

Abraços, e boa noite

self.life = rand()
Our will will guide us to a place where we belong.
mfp.c
JavaChild

Membro desde: 17/01/2007 20:30:42
Mensagens: 140
Localização: Brazil - RJ
Offline

ja tentou usar paint(Graphics g) ?

http://www.devnews.com.br Notícias de internet e Tecnologia.
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Sim
o problema não está no paint, e sim na hierarquia de painéis a serem pintados em um outro painel.

self.life = rand()
Our will will guide us to a place where we belong.
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Pessoal, boa noite

Infelizmente não consegui até agora realizar esse trabalho, mas agradeço a colaboração de quem leu este tópico.
Bom, vou tentar explicar melhor o problema.
Tenho um classe Conteudo, que extende Painel


Essa classe simplesmente desenha uma string em uma dada posição.

Agora, tenho uma outra classe chamada MemoriaUI:



Essa classe deve manter uma lista de conteudos e repinta-los conforme um evento. Tenho 2 dúvidas:
1° - É correto adicionar cada um dos objetos conteudos ao meu objeto MemoriaUI?
2° - Ao fazer isso, o método paintComponent de MemoriaUI está correto?

Obrigado e peço que se puderem entrem em contato comigo através do email renatoes@gmail.com. Agradeço a ajuda de tds.

self.life = rand()
Our will will guide us to a place where we belong.
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Primeiro, use a chamada do método da superclasse para assegurar que a estrutura do painel será pintada de forma correta.



Já em MemoriaUI, não chame o método paint para repintar, e sim o método repaint().



Em seu código vc está compartlhando o mesmo Graphics entre MemoriaUI e Conteudo (chamando paint), sendo assim vc só vai desenhar em quem tem aquele graphics. Isso NÃO deve ser feito, o paint é de responsabilidade do AWT... Não invoque ele nem paintComponente explicitamente. Use o repaint() como já falei.

A sua estruturação eu acho que está correta... Acho que isso vai mais de gosto mesmo.

Até mais!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Caro davidbuzatto,

Muito obrigado pela resposta, testei aqui e tudo ocorreu normal
Vou trabalhar aqui para montar o resto das classes, mas sua explicação iluminou muito.
Obrigado mais uma vez e boa noite a todos.

self.life = rand()
Our will will guide us to a place where we belong.
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Que bom que deu certo!
Falow!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team