Auto-redimensionamento de TELA no Swing

11 respostas
diego_perez

Tenho uma aplicação desenvolvida em um monitor de 22"
alguem sabe como fazer a aplicação redimensionar automaticamente a sua tela quando for um monitor de 15" por exemplo?
to com este problema pois quando rodo o programa no notbook so aparece metade do aplicativo…
To fazendo no Eclipse !

devo usar algum comando tipo:

java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();  
  jContentPane.setBounds(0,0,d.width,d.height); 


	jContentPane.setLayout(new FlowLayout());

11 Respostas

eduardoac

Ola,

Faz muito, muito tempo que não mexo com Swing, mas da última vez que trabalhei lembro que tinha um layout que já coisa disso, ou seja, ele leva mais em consideração a porcentagem de cada componente, assim, quando redimensiona (ou o tamanho do monitor) ele já faz automaticamente.

Abraços.

E

E ai, blza?

Então, existe o FreeDesign no NetBeans. Ele faz isso que está buscando.

Mas no Eclipse não conheço nenhuma ferramenta do tipo.

Abraço

diego_perez

e ai GAlera, alguem ajuda ai
no meu codigo ta assim o layout

jContentPane.setLayout(null);
Eric_Yuzo

Com layout null e setBounds, os componentes ficarão exatamente com o tamanho e posição definidos no setBounds. Para que eles redimensionem, deve usar layout managers.

Aqui tem mais informações sobre layout managers:

http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html

http://devsv.wordpress.com/category/java/java-desktop/

Se estiver fazendo as telas na mão, o MigLayout é uma excelente opção: http://www.miglayout.com/

diego_perez

qual o layout voces me aconselham entao?

eu tenho uuma tela tipo essa no anexo, sou iniciante ajuda ai


kenneth

Fala brow

Estude sobre GridBagLayout.

Abraco

diego_perez

eu dei uma lida sobre esse GridBagLayout
ate coloquei la

jContentPane.setLayout(new GridBagLayout());

mais como vou colocalo sem desordena toda a minha tela, vou ter q fazer d novo é?

Eric_Yuzo

Tem que refazer apenas a parte que cuida do posicionamento. Pois com GridBagLayout, você especifica no GridBagConstraints como o componente deve se comportar na tela ao invés de usar setBounds.

Você está fazendo as telas na mão ou está usando algum editor visual?

diego_perez

To fazendo na mao mesmo no Visual do eclipse(swing)
to entendendo, vo procurar uns exemplo no site da SUM

Eric_Yuzo

Se está fazendo na mão, o mais flexível e simples de usar é o MigLayout.

Basicamente você precisa retirar os setBounds e adicionar o segundo parâmetro do método add com a constraint do layout manager que for usar.

Com GridBagLayout dá um pouco mais de trabalho. Tem que configurar o GridBagConstraints. Se quiser exemplos:

http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

http://devsv.wordpress.com/2011/03/22/layout-manager-v-gridbag/

Com MigLayout fica mais simples. Na hora de add o componente, passa uma String como constraint. No quick start deles tem exemplos de como usar as constraints.

T
<blockquote><div class="quote-author">eduardoac:</div>Ola, Galera esse é meu primeiro post no site:

Como consegui diversas ajudas no site decidi ajudar tbm, pois não é justo.

Essa postagem é antiga, porém não foi respondido nada concreto.

O código está certo porém deve-se colocar no JFrame:

java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

JFrame.setBounds(0,0,d.width,d.height);
Não no ContentPanel ou qualquer outro componente:

java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

getContentPanel().setBounds(0,0,d.width,d.height);
Se preferir pode colocar this no lugar do JFrame:

java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

this.setBounds(0,0,d.width,d.height);

Espero ter ajudado alguém
Abraços.

Criado 29 de março de 2011
Ultima resposta 15 de jul. de 2014
Respostas 11
Participantes 6