Come da titolo... sto sperimentando invece del solito

Container pannello = get.ContentPane();

l'utilizzo di JFrame per creare una nuova frame che contenga il pannello (l'esempio l'ho fatto sfruttando qualche esercizio trovato su internet). Il risultato imprevisto però è la creazione di due finestre: una con quello che sto impostando io e l'altra vuota.
Come mai? Grazie

codice:
package interfacceutentegrafiche;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class LoginBase extends JFrame {


	private static final int LARGHEZZA = 500;
	private static final int ALTEZZA = 500;
	
	public LoginBase(){
		super();
		
		JFrame frame = new JFrame("Login");
		frame.setSize(LARGHEZZA,ALTEZZA);
		
		JPanel pannello = new JPanel();
	
		placeComponents(pannello);
	
		frame.add(pannello);
		frame.setVisible(true);
		
	}
	
	private static void placeComponents(JPanel panel){
		panel.setLayout(null);
		
		JLabel userLabel = new JLabel("User: ");
		userLabel.setBounds(10,10,80,25);
		panel.add(userLabel);
		
		JTextField userText = new JTextField(20);
		userText.setBounds(50,10,160,25);
		panel.add(userText);
		
		JLabel pwdLabel = new JLabel("Password: ");
		pwdLabel.setBounds(10,50,80,25);
		panel.add(pwdLabel);
		
		JTextField pwdText = new JTextField(20);
		pwdText.setBounds(80,50,160,25);
		panel.add(pwdText);
		
	}
	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub


		LoginBase login = new LoginBase();
		login.setVisible(true);
	}


}