Janela Java Swing

Olá amigos.

Estou começando agora com Java. E estou com problema na criação da Janela.
E quando eu adiciono um JButton ele pega o tamanho todo do JFrame.

Segue a imagem.

E segue o código que monta a janela.

package view.rotina;

import java.awt.BorderLayout;
import java.awt.Color;
import java.io.IOException;

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

import library.ProdutoLibrary;

import org.ini4j.InvalidFileFormatException;

import view.principal.PrincipalView;

public class ExecutaCadprodView extends JPanel {

private static final long serialVersionUID = 1L;
public JLabel lblLabel = new JLabel();
public JButton btnLeArquivo = new JButton();
public ProdutoLibrary produto;
private Integer wHeight = 200;
private Integer wWidth = 300;
static ExecutaCadprodView view;

public static void main(String[] args) {
	try {
		view = new ExecutaCadprodView();
		view.setVisible(true);
	} catch (Exception e) {
		System.out.println(e.getMessage());
		e.printStackTrace();
	}
}

public ExecutaCadprodView() throws InvalidFileFormatException, IOException, InterruptedException {
	this.produto = new ProdutoLibrary();
	initGui();
}

public void initGui() {
	JFrame frame = new JFrame("Executa Cadprod");

	frame.setSize(wWidth, wHeight);
	frame.setLayout(new BorderLayout(0, 0));
	frame.setBounds(((PrincipalView.frame.getWidth() - wWidth) / 2) + PrincipalView.frame.getBounds().x,
					((PrincipalView.frame.getHeight() - wHeight) / 2) + PrincipalView.frame.getBounds().y,
					wWidth,
					wHeight);

	this.lblLabel.setText("Lendo Arquivo...");
	this.lblLabel.setBounds(20, 10, 100, 20);
	this.lblLabel.setVisible(true);

	this.btnLeArquivo.setText("Iniciar");
	this.btnLeArquivo.setSize(50, 20);
	this.btnLeArquivo.setAlignmentX(10);
	this.btnLeArquivo.setAlignmentY(10);
	this.btnLeArquivo.setVisible(true);

	frame.getContentPane().add(this.lblLabel);
	frame.getContentPane().add(this.btnLeArquivo);
	frame.setVisible(true);
}

public void leArquivo() {
	Thread t1 = new Thread(new threadReadCadprod(this.produto));
	t1.start();

	try {
		t1.join();
	} catch(Exception e) {
		
	}

	this.lblLabel.setText("Arquivo lido com sucesso");
}

}

class threadReadCadprod implements Runnable {
ProdutoLibrary prod;

public threadReadCadprod(ProdutoLibrary produto) {
	prod = produto;
}

@Override
public void run() {
	try {
		prod.executeCadprod();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

Abraço.

Olá amigo

você precisa entender um pouco de layout:

https://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html

alguns exemplos:

https://docs.oracle.com/javase/tutorial/uiswing/components/button.html
https://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

já que está começando dê uma olhada em:

http://oswing.sourceforge.net/

Boa sorte

Silvio Guedes