Dúvida sobre o JTextField

6 respostas
I

Olá a todos.

Criei uma pequena aplicação de aprendizado onde em um JPanel coloquei um JLabel, JTextField e um JButton. O layout do JPanel é o BoxLayout.Y_AXIS. O Problema é o seguinte: o JTextField fica enorme e empurra JLabel e o JButton.

Algumas linhas do código:

// Objeto JPanel
    JPanel pnlPrincipal = new JPanel();
    pnlPrincipal.setLayout(new BoxLayout(pnlPrincipal,        BoxLayout.Y_AXIS));

    // Objeto JLabel - dentro do JPanel
    JLabel lblTeste1 = new JLabel("Sou JLabel no JPanel - 01");
     
    // Objeto JTextField - dentro do JPanel
    JTextField txtTeste1 = new JTextField("Sou um JTextField no JPanel - 01");

    // Objeto JButton - dentro do JPanel
    JButton btnTeste1 = new JButton("Sou um JButton no JPanel - 01");	   

    // adicionando os objetos ao JPanel
    pnlPrincipal.add(lblTeste1);
    pnlPrincipal.add(txtTeste1);
    pnlPrincipal.add(btnTeste1);

Já pesquisei pela web mas não soube encontrar a solução para isso.

Grato pela atenção.

6 Respostas

M

Tente instanciar um ponto que a JVM irá jogá-lo por default no lado esquerdo da tela e te permitirá alocar os demais J’s.

dudaskank

Você consegue contornar este problema especificando o maxSize do componente, como fiz aqui:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JPanel panel = new JPanel();

		panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

//		 Objeto JLabel - dentro do JPanel
		JLabel lblTeste1 = new JLabel("Sou JLabel no JPanel - 01");

//		 Objeto JTextField - dentro do JPanel
		JTextField txtTeste1 = new JTextField("Sou um JTextField no JPanel - 01");

//		 Objeto JButton - dentro do JPanel
		JButton btnTeste1 = new JButton("Sou um JButton no JPanel - 01");

//		 adicionando os objetos ao JPanel
		panel.add(lblTeste1);
		panel.add(txtTeste1);
		panel.add(btnTeste1);
		
		getContentPane().add(panel);
		pack();
		Dimension size = txtTeste1.getSize();
		size.width = Integer.MAX_VALUE;
		txtTeste1.setMaximumSize(size);

Deste jeito, o tamanho máximo no eixo y fica constante, enquanto o x pode variar livremente.

flw

Pedrosa

Tente usar uma IDE para construir esses formulários, sugestão:

http://www.netbeans.info/downloads/index.php

Ou tente o Eclipse, mas nele você precisa baixar o plugin EclipseVE.

I

Obrigado pelas dicas e sugestões. Eu tenho usado o NetBeans para fazer as GUIs, mas também estou fazendo pequenos programas como esse para aprender como o Java funciona.

M

Simplesmente adicione um ponto como JLabel dentro do JPanel e ele automaticamente fará o resto. Mas ele tem que ser o último objeto a ser instanciado.

_fs

Para fazer estes “programinhas” que são apenas interfaces simples para o código que está estudando, recomendo Thinlet e não Swing. Muito mais simples:
http://thinlet.sourceforge.net/home.html

Criado 25 de janeiro de 2007
Ultima resposta 29 de jan. de 2007
Respostas 6
Participantes 5