Dúvida Botões e JTextField

6 respostas
D
Olá pessoal, estou começando a mexer com Swing e o exercicio que estou fazendo não saiu como esperado rs A tela que fiz, não exibe os botões que criei e os JTextField ficam pequenos. O que fiz errado? Obrigado!
public class Tela extends JFrame {
	JButton btnOk = new JButton("Ok");
	JButton btnCancel = new JButton("Cancelar");
	JPanel pnl = new JPanel();
	JPanel botaoPanel;  

	JTextField nomeArt = new JTextField();
	JLabel lblNomeArt = new JLabel("Nome Artista ");

	JTextField nomeAlb = new JTextField();
	JLabel lblNomeAlb = new JLabel("Nome Album ");

	JTextField numFaixas = new JTextField();
	JLabel lblNumFaixas = new JLabel("Número de Faixas");

	JTextField genero = new JTextField();
	JLabel lblgenero = new JLabel("Genero: ");

	JTextField ano = new JTextField();
	JLabel lblAno = new JLabel("Ano: ");

	public Tela() {
		super("Cadastro");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setVisible(true);	
	}
	public void criaJanela() {
		pnl.add(lblNomeArt);
		pnl.add(nomeArt);
		pnl.add(lblNomeAlb);
		pnl.add(nomeAlb);
		pnl.add(lblNumFaixas);
		pnl.add(numFaixas);
		pnl.add(lblgenero);
		pnl.add(genero);
		pnl.add(lblAno);
		pnl.add(ano);
		getContentPane().add(pnl, BorderLayout.CENTER);
		
		botaoPanel.add(btnCancel);                        
        botaoPanel.add(btnOk);  
        getContentPane().add(botaoPanel, BorderLayout.SOUTH);

	}
	

	public static void main(String[] args) {
		Tela t = new Tela();
		t.criaJanela();
	}

6 Respostas

ViniGodoy
  1. Inicialize o botão panel com FlowLayout:
  1. Para o painel central, seria bom usar um GridLayout ou um GridBagLayout.
    http://download.oracle.com/javase/tutorial/uiswing/layout/grid.html
    http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

Ou mesmo o MigLayout:
http://www.miglayout.com/QuickStart.pdf

  1. É uma boa prática não chamar setVisible(true) no construtor do seu JFrame.

  2. Chame o método criajanela no construtor, antes de fazer setVisible(true). E deixe o método criaJanela() private.

mrrbigu

Além do que o Vini já disse é sempre bom incluir o comando pack() na última linha do construtor.

ViniGodoy

O comando pack() redimensiona a janela automaticamente para o preferredSize dos componentes. Isso muitas vezes é interessante, muitas vezes não. Imaginei que ele não quisesse por dar um setSize diretamente na janela dele.

D

Pessoal, ainda continuam aparecendo os JtextFields pequenos… tentei também com o setSize() e mesmo assim não se alteraram!
O que pode ser?

ViniGodoy

Que layout manager você usou?

Use o setPreferredSize, não o setSize.

levimendes

passe para o contrutor do JTextField um valor inteiro para ser definido o ‘tamanho’ do seu JTextField, ex:

JTextField nomeArt = new JTextField(10);
Criado 13 de outubro de 2010
Ultima resposta 15 de out. de 2010
Respostas 6
Participantes 4