What constructor implementaton follows best practice in Java
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();
            }
        });
    }
}