Dificuldade com o uso do JTextField

2 respostas
Bruno.Silveira

Bom Dia !

Sou novo no fórum e iniciante em java estou tentando
colocar componentes dentro de um Frame, tive sucesso com o JLabel e
com o Jbutton, porém quando eu insiro o JTextField ele apaga tudo e
meu container fica em branco alguem poderia me ajudar ?

Obs: Percebi que quando instancio o JTextField fora do construtor funciona.
Porem quando tendo fazer d forma abaixo da o erro citado acima.
Gostaria de saber porque.

Segue meu código:

package gui;

import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class NovaJanela extends JFrame  {    
     
    private JButton bt1;
    private JButton bt2;    
    private JLabel lb1;
    private JTextField tf1;// quando faço JTextField tf1 = new TextField (10); funciona !!   
    
    Container container = new Container();
    
   public NovaJanela (){
       
       super ("Cadastro");           
       container=this.getContentPane();
       container.setLayout(new FlowLayout());
       this.setVisible(true);
       this.setSize(640, 480);    
       
       
       bt1 = new JButton("bt1");
       bt2 = new JButton("bt2");       
      lb1 = new JLabel ("Nome");      
      tf1=new JTextField (10);
       
       container.add(bt1); 
       container.add(bt2); 
       container.add(lb1);
       container.add(tf1);       
       
   }   
    
    public static void main (String args []){        
    
        NovaJanela janela = new NovaJanela();   
    
    }   
    
}

Desde já, grato.

2 Respostas

ViniGodoy

Nunca coloque o setVisible(true) dentro do construtor da sua janela. Você está tentando tornar visível uma janela que sequer existe ainda.
Isso gera diversos problemas de layout.

package gui;

import java.awt.FlowLayout;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class NovaJanela extends JFrame  {    
     
    private JButton bt1;
    private JButton bt2;    
    private JLabel lb1;
    private JTextField tf1;
    
   public NovaJanela () {       
       super ("Cadastro");           
       setSize(640, 480);    

       bt1 = new JButton("bt1");
       bt2 = new JButton("bt2");       
       lb1 = new JLabel ("Nome");      
       tf1=new JTextField (10);
       
       add(bt1); 
       add(bt2); 
       add(lb1);
       add(tf1);
   }   
    
    public static void main (String args []){        
        NovaJanela janela = new NovaJanela();   
        janela.setVisible(true); //Local correto   
    }
}
Bruno.Silveira

Muito obrigado !!! como faço para colocar como resolvido ?

Criado 1 de fevereiro de 2015
Ultima resposta 2 de fev. de 2015
Respostas 2
Participantes 2