What constructor implementaton follows best practice in Java I am looking for best practices as they apply to constructor usage in common Java class construction.

Example 1

import javax.swing.*;
import java.awt.*;

public class Painter extends JPanel{

  public Painter(){
     buildGUI();
  }

  private void buildGUI(){
    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());
    frame.setTitle("Paint drawing demonstration");
    new Center_frame(frame);

    JPanel headerPanel = new JPanel();
    headerPanel.add(new JLabel("The drawing panel is below"));

    Drawing_panel dp = new Drawing_panel();

    frame.add(BorderLayout.NORTH,headerPanel);
    frame.add(BorderLayout.SOUTH,dp);

    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String args[]){
      new Painter();
  }

}//end class Painter


Example2

import javax.swing.*;
import java.awt.*;

public class Painter extends JPanel{

  public Painter(){
       JFrame frame = new JFrame();
       frame.setLayout(new BorderLayout());
       frame.setTitle("Paint drawing demonstration");
       new Center_frame(frame);

       JPanel headerPanel = new JPanel();
       headerPanel.add(new JLabel("The drawing panel is below"));

       Drawing_panel dp = new Drawing_panel();

       frame.add(BorderLayout.NORTH,headerPanel);
       frame.add(BorderLayout.SOUTH,dp);

       frame.pack();
       frame.setVisible(true);
  }

public static void main(String args[]){
    //create a Painter object
    new Painter();
}

}//end class Painter
no one from them, this should be standard or base

EDIT: added DefaultCloseOperation for Top-Level Container 

import javax.swing.*;
import java.awt.*;

public class Painter {

    private JFrame frame;
    private JPanel headerPanel;
    private Drawing_panel ;

    public Painter() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.setTitle("Paint drawing demonstration");

        //new Center_frame(frame); 
        //no reason for create another new JFrame look for 
        //JDialog instead of JFrame, if you needed multiplayed
        //view then check CardLayout, is very easy for use 

        headerPanel = new JPanel();
        headerPanel.add(new JLabel("The drawing panel is below"));

        dp = new Drawing_panel();

        frame.add(headerPanel, BorderLayout.NORTH);
        frame.add(dp, BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Painter p = new Painter();
            }
        });
    }
}