Por que os componentes não estão alinhados e com o tamanho "setado"

1 resposta
V

Bom pessoal gostaria de alinhar os componentes de minha tela,tipo os JLabels alinhados ( "Os 2 pontos do descrição alinhado com os dois pontos do código", outra coisa que gostaria de fazer seria deixar o tamanho dos componentes ja setados... porém não estou conseguindo... alguem poderia me ajudar...

Segue abaixo o código

package Tipo;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class GUI_CadastroTipo1 extends JDialog {

    private static final long serialVersionUID = 1L;
    private JLabel lblCodigo, lblDescricao;
    private JButton cmdGravar;
    private JTextField txtCodigo, txtDescricao;
    private JPanel pnlCodigo, pnlDescricao;

    public GUI_CadastroTipo1(java.awt.Frame parent, boolean modal) {
        instanciaComponentes();
        configuraComponentes();
        adicionaComponentes();
        ajustaJanela();
    }

    private void instanciaComponentes() {

        lblCodigo = new JLabel("Codigo:");
        txtCodigo = new JTextField();


        lblDescricao = new JLabel("Descrição:");
        txtDescricao = new JTextField();


        cmdGravar = new JButton();
        cmdGravar.setText("Adicionar");
        cmdGravar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // nesse caso, simplesmente adiciona um novo cliente aleat?rio
                //modelo.adiciona(ClienteDAO.geraContato());
            }
        });
    }

    private void configuraComponentes() {
        txtCodigo.setBounds(0, 0, 100, 25);
        txtDescricao.setBounds(0, 0, 200, 25);
    }

    private void adicionaComponentes() {
        JPanel pnlBotao = new JPanel();
        pnlBotao.add(cmdGravar);

        pnlCodigo = new JPanel();
        pnlCodigo.add(lblCodigo);
        pnlCodigo.add(txtCodigo);

        pnlDescricao = new JPanel();
        pnlDescricao.add(lblDescricao);
        pnlDescricao.add(txtDescricao);

        add(pnlCodigo, BorderLayout.NORTH);
        add(pnlDescricao, BorderLayout.CENTER);
        add(pnlBotao, BorderLayout.SOUTH);

    }

    private void ajustaJanela() {
        setTitle("Cadastro de Tipo");
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }
}

1 Resposta

Francisco_Silva

Amigo, “setBounds” é para usar com layout null, o que não é aconselhável… ou seja você ta setando valores de localização absolutos e ao mesmo tempo que usa um gerenciador de Layout(FlowLayout) que posiciona os componentes de modo relativo…
A solução seria usar um gerenciador de layout mesmo… sugiro o GridBagLayout… mas primeiro tera que aprender a usar…

Para setar um tamanho especifico ao seus componentes, use setPreferenceSize()… não funciona com todos gerenciadores de layouts, então tera que pesquisar.

Tutorial Java…
http://download.oracle.com/javase/tutorial/uiswing/layout/index.html

Para complementar…
http://devsv.wordpress.com/category/java/java-desktop/

Especialmente esse…
http://devsv.wordpress.com/2010/12/07/layout-manager-i-null/

Editado: Talvez para esse caso em especial FlowLayout resolve… é só setar um valor de distancia entre componentes “new FlowLayout(align, hgap, vgap)”.

Fuja do Null Layout…

Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 1
Participantes 2