Ajuda com configuração de Layout

6 respostas
luciano2

Pessoal,

Eu desenvolvo em java ja faz um certo tempo, mas nunca tinha desenvolvendo nada com SWING, estou com o seguinte problema.

Tenho um jframe que deve conter componentes de login e senha e um botão para login. Quando adiciono os componentes e mando rodar os componentes são redimensionados para o tamanho do JFrame. Alguem me explica por que isso acontece?

public CommuniQLogin(){
    	  this.setSize(WIDTH, HEIGHT);
    	  this.setLayout(new BorderLayout());
    	  this.setWindowComponents();
    	  
    	  this.setVisible(true);
    	  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
	  
	  public void setWindowComponents(){
    	  JPanel jp = new JPanel();
    	  
    	  jp.setLayout(new GridLayout(2,1));
		  
		  jp.add(this.getPanel());  
    	  jp.add(this.getButtonLogin());
    	  
    	  this.add(jp,BorderLayout.CENTER);
	  }
	  
	  public JPanel getPanel(){
		  JPanel jp1 = new JPanel();
		  jp1.setSize(150,300);
	      jp1.setLayout(new GridLayout(2,2));

	      jp1.add(lblLogin);	  
		  login = new JTextField();
		  login.setSize(100, 20);
		  jp1.add(login);
		  
		  jp1.add(lblSenha);
		  senha = new JPasswordField();
		  senha.setSize(100, 20);
		  jp1.add(senha);
		  
		  
		  jp1.setVisible(true);
          return jp1;     
	  }

6 Respostas

samirrolemberg

é o tipo de layout que vc está usando.

o melhor jeito é usar uma IDE pra desenhar a tela setando o layout como null.

na minha opinião é logico.

dá uma pesquisada no melhor tipo de layout pra usar neste metodo que vc esta tentando fazer (provavelmente pra a prender).

se nao me falha a memoria tem o gridlayout ou o gridbaglayout. são os mais simpaticos.

luciano2

Com o netBeans eu consegui fazer, dei uma olhada no código mas achei um código muito sujo, acho q deve ter jeito diferente de fazer

D

Não use NullLayout, você perderá a portabilidade.

Uma maneira de você fazer o que deseja é utilizar FlowLayout. Ele adicionará um componente após o outro e quando não houver mais espaço para um novo componente na tela, este automaticamente irá para a parte de baixo. Basta você atribuir um tamanho no qual sua tela suporte apenas o edit com o label indentificador e sua tela deve ficar do jeito que você deseja.

Faz algum tempo que não uso Swing, então não sei lhe dizer se essa é a melhor opção para o problema(to meio enferrujado nessa parte, hehe, sem dizer que no que trabalho agora as opções para fazer isso são mais interessantes). De qualquer forma, algo que você deve perder é a posição dos componentes se aumentar a largura do JFrame. Se é viável para você, retire a opção de redimensionar para que isso não aconteça. Caso queira estudar mais profudamente os assuntos, esse link pode ser de grande utilidade:

http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html

samirrolemberg

o net beans faz um controle gigante dos componentes swing.

fica bonito, mas o codigo da tela fica monstruoso.

tente no eclipse.

a visual editor é mais simples, usa menos codigo. o unico contra, é que ela não gerencia os componentes (para edição) tão bem quanto o net beans.

suelengc

luciano@@,

Tive este mesmo problema há alguns dias e também sempre trabalhei com Java só com interface gráfica web, logo tive a mesma dificuldade.

Eu não quis usar o NB porque ele cria um arquivo (xml) .form e ouvi dizer que ele “trava” o código, não entendi muito bem o que isso quer dizer mas pelo que percebi, é no sentido literal da palavra mesmo, vc não consegue alterar o código gerado por ele.

A príncípio fui estudar sobre gerenciadores de layout, o melhor que encontrei foi o GroupLayout. Me pareceu mais fácil. Mas de qualquer forma, ainda era para mim, muito improdutivo pois meu tempo era (anda é pois ainda não acabei o que preciso) restrito. Fui então procurar um plugin gráfico parecido com o do NB.

Li muito sobre o Visual Editor mas por final não consegui instalar ele, achei então o VS4E (Visual Swing For Eclipse) free e open, está no codesearch do Google (http://code.google.com/p/visualswing4eclipse/).

Estou usando ele e estou achando ótimo! Tem alguns bugs por exemplo, as vezes duplica determinado comando e faz seu código não compilar, mas basta ir, apagar e está tudo ok novamente. As vezes vc altera algo, salva e do nada ele volta a versão antes da alteração… enfim, foram só estes dois que notei.
Nada super grave e irremediável.

Achei o código gerado por ele bem limpo e ele fácil de instalar e usar.

Para instalar:

- Baixe os .jars (são 8 ao todo)

-  na pasta de instalação do Eclipse/plugins e coloque os arquivos  (caso não saiba onde o Eclipse está instalado,  em Help -> About -> More Details, aba de configurações e  vc encontra o diretório - os nomes do menu que citei não estão perfeitamente iguais ao menu do Eclipse mas acredito que  para entender. O motivo é que não posso abrir o Eclipse no momento que estou postando esta mensagem)

- Abra o Eclipse e qndo for criar uma nova classe, haverá a opção Visual Swing, crie uma deste tipo e  estará disponível a pallete com os componentes, janela de propriedades etc etc.

Boa sorte!! Espero ter ajudado.

Abs.,

luciano2

Vlw pela ajuda galera,

Suelen eu vou instalar esse plugin e dar uma olhada, eu também não sou muito fã do net beans, a maioria dos projetos que crio com ele da pau no eclipse e tenho que refazer as configurações. Meu interesse no momento é só didático mesmo. Swing é uma coisa que nunca tive que usar logo não tenho muito conhecimento disso, de qualquer forma vlw.

Criado 28 de maio de 2010
Ultima resposta 31 de mai. de 2010
Respostas 6
Participantes 4