Ajuda com configuração de Layout

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?

[code]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;     
  }[/code]


é 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.

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

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

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.

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 .jar’s (são 8 ao todo)
- vá na pasta de instalação do Eclipse/plugins e coloque os arquivos lá (caso não saiba onde o Eclipse está instalado, vá em Help -> About -> More Details, aba de configurações e lá vc encontra o diretório - os nomes do menu que citei não estão perfeitamente iguais ao menu do Eclipse mas acredito que ná 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 já estará disponível a pallete com os componentes, janela de propriedades etc etc.

Boa sorte!! Espero ter ajudado.

Abs.,

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.