Componentes de tamanho diferentes

Bom dia galera, eu aqui de novo, agora com uma dúvida na interface swing.
Os meus componentes vem com tamanho diferentes, como na imagem:

o campo de texto login não esta alinhado com o de senha e os Jbuttons estão em tamanhos diferentes,

como faço para arrumar isso?

segue código dos componentes:

public class Componentes extends JFrame implements ActionListener {
    
JFrame frame = new JFrame();
	JLabel lbl1 = new JLabel("Login:");
	JLabel lbl2 = new JLabel("Senha:");
	JTextField us = new JTextField(20);
	JPasswordField psw = new JPasswordField(20);
	JButton btLogin = new JButton("Login");
	JButton btClear = new JButton("Clear");
	JButton btCancelar = new JButton("Cancelar");
	JPanel panel = new JPanel();
	
	public Componentes(){
		
		super("Login");
		panel.add(lbl1);
		panel.add(us);
		panel.add(lbl2);
		panel.add(psw);
		panel.add(btLogin);
		panel.add(btClear);
		panel.add(btCancelar);
		frame.add(panel);
		
		frame.setTitle("Window Login");
		frame.setSize(300, 120);
		frame.setVisible(true);
		btLogin.addActionListener(this);

Obrigado

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

Vai ter que definir um layout para seu frame… tem o comando setLayout(layout) utilizado para isso…
Quanto aos layouts, existem vários que vc pode utilizar… dá uma pesquisada para ver o mais adequado ao seu caso…

Exemplo: GridLayout, BorderLayout, FlowLayout, GridBagLayout, etc…