GridBagLayout desarrumado

1 resposta
O

Pessoal, pq os botoes ficam um maior q o outro ? nao pode ficar do mesmo tamanho ?
vejam o codigo :

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.*;
public class Login extends JFrame implements ActionListener

{

private String cmd;

public Login()

{
setTitle("Login");
    setSize(100,100);
    GridBagLayout layout = new GridBagLayout();
    GridBagConstraints c = new GridBagConstraints();
    c.fill= GridBagConstraints.HORIZONTAL;

    getContentPane().setLayout(layout);

    JButton btnLogin = new JButton("Login");
    JButton btnCancelar = new JButton("Cancelar");

    JLabel lblLogin = new JLabel("Usuário");
    JLabel lblSenha = new JLabel("Senha");

    JTextField txtLogin = new JTextField(15);
    JPasswordField txtSenha = new JPasswordField(15);


    c.gridy = 0;
    c.gridx = 0;
    layout.setConstraints(lblLogin, c);
    getContentPane().add(lblLogin);

    c.gridy = 1;
    c.gridx = 0;
    layout.setConstraints(lblSenha, c);
    getContentPane().add(lblSenha);

    c.gridy = 0;
    c.gridx = 1;
    layout.setConstraints(txtLogin, c);
    getContentPane().add(txtLogin);

    c.gridy = 1;
    c.gridx = 1;
    layout.setConstraints(txtSenha, c);
    getContentPane().add(txtSenha);
[color=“red”]        c.gridy = 2;

c.gridx = 0;

c.gridheight = 6;

layout.setConstraints(btnLogin, c);

getContentPane().add(btnLogin);

btnLogin.addActionListener(this);
c.gridy = 2;
    c.gridx = 1;
    layout.setConstraints(btnCancelar, c);
    getContentPane().add(btnCancelar);
    Conexao cn = new Conexao();
    cn.conDataBase();[/color]

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //setResizable(false);

    pack();
    setVisible(true);

}
public void actionPerformed(ActionEvent e) {
  cmd = e.getActionCommand();
  if (cmd == "Login")  {
     JOptionPane.showMessageDialog(null, "Login", "Autenticação",
     JOptionPane.ERROR_MESSAGE);
  }
}
public static void main(String args[])
{
    net.java.plaf.LookAndFeelPatchManager.initialize();
    new Login();
}

}

1 Resposta

D

Por causa do alinhamento de células; quando vc definiu a grade de layout você usou para o botão Cancelar a mesma coluna dos campos de texto…; quando você redimenciona a janela a coluna das caixas de texto ajustam se ajustam (preferred size)…;

Tente fazer assim:

Use o layout geral do diálogo como sendo o BorderLayout.
Inclua os botões em um JPanel com um FlowLayout (geralmente alinhado à direita) e adicione neste JPanel os botões.
Crie um JPanel central e nesse JPanel aplique o GridBagLayout da maneira que você fez, dai você adiciona os JPanels ao Container do JFrame:

JPanel panelBotoes = new JPanel&#40;&#41;;
panelBotoes.setLayout&#40;new FlowLayout&#40;FlowLayout.RIGHT&#41;&#41;;

panelBotoes.add&#40;btnLogin&#41;;
panelBotoes.add&#40;btnCancelar&#41;;

JPanel panelLogin = new JPanel&#40;&#41;;
panelLogin.setLayout&#40;new GridBagLayout&#40;&#41;&#41;;

// adicione os componentes com suas restrições aqui...
// &#40;labels e caixas de texto&#41;...

getContentPane&#40;&#41;.add&#40;panelBotoes, "South"&#41;;
getContentPane&#40;&#41;.add&#40;panelLogin, "Center"&#41;;

deve funcionar…

Criado 27 de novembro de 2003
Ultima resposta 27 de nov. de 2003
Respostas 1
Participantes 2