[RESOLVIDO] Centralizar um JPanel  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

Boa tarde amigos,

Estou com um probleminha na minha aplicação, então reproduzi meu probleminha num exemplo pequeno, pra poder testar. Não reparem nas telas, como falei, se trata de um exemplo.

Bem, eu tenho meu JFrame chamado Main:



No qual tenho o seguinte construtor:



E tenho meu JInternalFrame chamado Form:



No qual tenho o seguinte construtor:



No final, obtenho o seguinte resultado:



Isso é QUASE o que eu queria. Eu queria que ele centralizasse o JPanel que eu usei pra colocar o JInternalFrame dentro. Mas não consigo! Eu assinalei no código acima a linha em que eu estou mandando centralizar. Já coloquei valores fixos naquele comando pra ver se o problema era com minhas contas, mas que nada! Ele não obedece o setLocation.

Por favor, alguém pode me ajudar?!

Grata

This message was edited 1 time. Last update was at 07/11/2007 15:30:28


[]'s, Renata
[Email]
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

Pessoal, problema resolvido!

O Victor (Ratão) me ajudou pelo MSN. Deixo aqui a solução pra quem tiver um problema parecido. No construtor do Form, invés de usar setPreferredSize e depois setLocation, coloquei os seguintes comandos:



Vlw Victor!!!

[]'s, Renata
[Email]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Você deu um setLayout(null); no seu JFrame?

Para centralizar direitinho, você também precisa levar em consideração os insets do seu JFrame. Os insets são as áreas não uteis da decoração do frame (barra de título e borda lateral) e podem ser obtidos com o método getInsets().

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Ratao
Virtual Machine Man
[Avatar]

Membro desde: 14/05/2006 22:09:25
Mensagens: 529
Localização: Cachoeiro de Itapemirim - ES
Offline

Não foi nada Renata! Depois de tanto me ajudar rsrsrs...

Esse assunto que o Vini tocou eh uma boa. Eu não sabia dessa parte!
Valew!

"Não existe limites para a mente humana... sendo então ilimitado nosso poder de realização."
Victor Zangerolame Fim
[Email] [MSN]
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline


Eu tava fazendo isso mas na mão...rs... subtraindo os pixels...

Vlw Vini!

[]'s, Renata
[Email]
asd
Debugger

Membro desde: 03/11/2008 17:04:36
Mensagens: 59
Offline

Me desculpem ressucitar o topico, mas alguem poderia me explicar o que o ViniGodoy disse?
Eu quero centralizar um painel. Eu sei aonde ele deve estar (na metade da largura e da altura do JFrame, certo?). Mas como colocar ele ali?
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

RenataFA wrote:Pessoal, problema resolvido!

O Victor (Ratão) me ajudou pelo MSN. Deixo aqui a solução pra quem tiver um problema parecido. No construtor do Form, invés de usar setPreferredSize e depois setLocation, coloquei os seguintes comandos:



Vlw Victor!!!


Esse meu post acima é a resposta, foi assim que funcionou.

[]'s, Renata
[Email]
asd
Debugger

Membro desde: 03/11/2008 17:04:36
Mensagens: 59
Offline

renata,
pois e, aqui também funcionou. Mas como eu posso adicionar um JPanel embaixo desse que foi centralizado? tipo ficar 2 paineis: o de cima com alguma coisa e o de baixo com outra?
eu não teria que definir algum layout?
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

asd wrote:renata,
pois e, aqui também funcionou. Mas como eu posso adicionar um JPanel embaixo desse que foi centralizado? tipo ficar 2 paineis: o de cima com alguma coisa e o de baixo com outra?
eu não teria que definir algum layout?


Pq invés de adicionar um JPanel embaixo desse que foi centralizado vc não centraliza um novo JPanel e coloca esse seu em cima dele?

[]'s, Renata
[Email]
asd
Debugger

Membro desde: 03/11/2008 17:04:36
Mensagens: 59
Offline

Eu tentei fazer isso, mas como o layout tá em null não consigo adicionar o outro painel
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

Uso layout null em tudo aqui. Isso não é motivo pra não conseguir, alguma outra coisa deve estar errada...

[]'s, Renata
[Email]
tominem
Thread.start()

Membro desde: 28/01/2010 21:39:12
Mensagens: 30
Offline

bom galera aproveitando a dica do ratão, o meu não ficou exatamente no cetro dá tela mesmo calculando as coordenadas:

então modifiquei um pouco o código, criei um método onde usei flowlayout ao invès de null:

[/code]
public void centralizarContainer(Component pai, Component filho){

// obter dimensões do pai
int larguraPai = pai.getWidth();
int alturaPai = pai.getHeight();

// obter dimensões do filho
int larguraFilho = filho.getWidth();
int alturaFilho = filho.getWidth();

// calcular novas coordenadas do filho
int novoX = (larguraPai - larguraFilho);
int novoY = (alturaPai - alturaFilho);

// centralizar filho
filho.getParent().setLayout(new FlowLayout());
filho.setPreferredSize(new Dimension(novoX, novoY));
filho.repaint();
filho.setLocation(novoX/2, novoY/2);

}
[/code]

Aki funcionou direitinho, testem ae e vejam se funciona. Valew
tominem
Thread.start()

Membro desde: 28/01/2010 21:39:12
Mensagens: 30
Offline

fuçando aki ... achei uma solução melhor:



Crio um gridbagLayout no lugar do Flowlayout como anteriormente.

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team