Estudando Programa

3 respostas
M

PessoALL, estou estudando este programa mas na execução não apareçe os JTextField que está criado na classe, por que?
Lembrando que sou iniciante. :lol:

// classe Usuario
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Usuario extends JPanel {
	protected JLabel usuarioLabel, nomeLabel;
	protected JTextField usuarioField, nomeField;
	protected JPanel centroPanel, baixoPanel;
	protected JButton simBotao, naoBotao;

	public Usuario()
	{
		usuarioLabel = new JLabel( "Nome Usuário");
		usuarioField = new JTextField(10);
		nomeLabel = new JLabel( "Nome Nome");
		nomeField = new JTextField(10);
		centroPanel = new JPanel();
//		centroPanel.setLayout( new GridLayout( 4, 2 ) );

		centroPanel.add( usuarioLabel );	
		centroPanel.add( usuarioField );	
		centroPanel.add( nomeLabel );	
		centroPanel.add( nomeField );
		simBotao = new JButton();
		naoBotao = new JButton();

		baixoPanel = new JPanel();
		baixoPanel.add( simBotao );
		baixoPanel.add( naoBotao );
		setLayout( new BorderLayout() );		
		add( centroPanel, BorderLayout.CENTER );
		add( baixoPanel, BorderLayout.CENTER );

		validate();
	}
	public JButton getSimBotao()
	{
		return simBotao;
	}
	public JButton getNaoBotao()
	{
		return naoBotao;
	}
	public JTextField getUsuarioField()
	{
		return usuarioField;
	}
	public JTextField getNomeField()
	{
		return nomeField;
	}
	public void clearFields()
	{
		usuarioField.setText( "" );
		nomeField.setText( "" );
	}
	public void setFieldUsario( String string )
	{
		usuarioField.setText( string );
	}
	public void setFieldNome( String string )
	{
		nomeField.setText( string );
	}
}
Sub classe
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Usuario2 extends JFrame {
	private Usuario userInterface;
	private JButton nextButton, openButton;
	public Usuario2()
	{
		super( "Testando classe" );
		userInterface = new Usuario();
		getContentPane().add(
			userInterface, BorderLayout.CENTER );

		openButton = userInterface.getSimBotao();
		openButton.setText( "Sim" );
		nextButton = userInterface.getNaoBotao();
		nextButton.setText( "Nao" );
		pack();
		setSize( 300, 200 );
		show();
	}
	public static void main( String args[] )
	{
		new Usuario2();
	}
}

aproveitando pra que server os metodos validate() e pack()?

Desde já agradeço

Marcos

3 Respostas

H

Eu acho que o layout do getContentPane() do Usuario2 não é BorderLayout, então vc precisa setar como BorderLayout.

getContentPane().setLayout(new BorderLayout());
M

Mesmo assim Heber, quando executo não aparece os JTextField da minha classe.

Continuo no aguardo.

Marcos

A

Segundo o livro como programar 3º edição

c.validate ();

ilustra outra maneira de redesenhar um contêiner cujo leiaute foi alterado. O metodo Container validate recalcula o leiaute do contêiner com base no gerenciador de leiaute atual para o Container e o conjunto atual de componentes GUI exibidos. 8)

Criado 22 de abril de 2004
Ultima resposta 22 de abr. de 2004
Respostas 3
Participantes 3