Erro com lógica ou repaint / revalidate Java JFrame

O que estou tentando fazer é isso, quando eu inserir os detalhes ele irá validar se o textFiled estiver vazio quando um botão for pressionado, se estiver vazio ele irá exibir uma mensagem dizendo isso. Em seguida, ele será movido para o próximo textFile, semelhante a muitos formulários de registro baseados na Web. O que estou tentando descobrir é por que a mensagem não muda?

Colar esse código em um arquivo ecilpse e executá-lo deve exibir o quadro simples e o que estou tentando fazer.

A mensagem é exibida na parte inferior do quadro quando o campo de nome está vazio. Alguém pode explicar por que não mostra a próxima mensagem quando o campo de nome contém texto e o nome de meio não contém texto?

A maior parte da lógica está no final do código.

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Color;
import javax.swing.UIManager;
import javax.swing.JPanel;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.factories.FormFactory;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JRadioButton;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JButton;
import javax.swing.JComboBox;

public class start {

private JFrame frame;
private JTextField tfFirstname;
private JTextField tfMiddlenames;
private JTextField tfSurname;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                start window = new start();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public start() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();

    frame.setBounds(100, 100, 505, 429);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    frame.getContentPane().setLayout(null);

    final JPanel panelClientNew = new JPanel();
    panelClientNew.setBackground(new Color(0, 102, 255));
    panelClientNew.setBounds(10, 11, 469, 299);
    frame.getContentPane().add(panelClientNew);
    panelClientNew.setLayout(null);

    JLabel lblFirstname = new JLabel("Firstname :");
    lblFirstname.setHorizontalAlignment(SwingConstants.RIGHT);
    lblFirstname.setVerticalAlignment(SwingConstants.BOTTOM);
    lblFirstname.setForeground(new Color(255, 255, 255));
    lblFirstname.setFont(new Font("Tahoma", Font.BOLD, 13));
    lblFirstname.setBounds(10, 16, 163, 14);
    panelClientNew.add(lblFirstname);

    tfFirstname = new JTextField();
    tfFirstname.setFont(new Font("Tahoma", Font.PLAIN, 13));
    tfFirstname.setBounds(177, 10, 282, 27);
    panelClientNew.add(tfFirstname);
    tfFirstname.setColumns(10);

    JLabel lblMiddlenames = new JLabel("Middlenames :");
    lblMiddlenames.setHorizontalAlignment(SwingConstants.RIGHT);
    lblMiddlenames.setForeground(new Color(255, 255, 255));
    lblMiddlenames.setFont(new Font("Tahoma", Font.BOLD, 13));
    lblMiddlenames.setBounds(10, 47, 163, 14);
    panelClientNew.add(lblMiddlenames);

    tfMiddlenames = new JTextField();
    tfMiddlenames.setFont(new Font("Tahoma", Font.PLAIN, 13));
    tfMiddlenames.setBounds(177, 41, 282, 27);
    panelClientNew.add(tfMiddlenames);
    tfMiddlenames.setColumns(10);

    JLabel lblSurname = new JLabel("Surname :");
    lblSurname.setHorizontalAlignment(SwingConstants.RIGHT);
    lblSurname.setForeground(new Color(255, 255, 255));
    lblSurname.setFont(new Font("Tahoma", Font.BOLD, 13));
    lblSurname.setBounds(10, 78, 163, 14);
    panelClientNew.add(lblSurname);

    tfSurname = new JTextField();
    tfSurname.setFont(new Font("Tahoma", Font.PLAIN, 13));
    tfSurname.setBounds(177, 72, 282, 27);
    panelClientNew.add(tfSurname);
    tfSurname.setColumns(10);



    JButton btnAdd = new JButton("Add");
    btnAdd.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent arg0) {
            /*
             * 
             * 
             *
             *I am trying to create a message that validates on certain circumstances
             * 
             * 
             * 
             */

            if(tfFirstname.getText().equals(null) || tfFirstname.getText().equals("") || tfFirstname.getText().equals(false)) {
                JPanel panelMessage = new JPanel();
                panelMessage.setBackground(new Color(30, 144, 255));
                panelMessage.setBounds(10, 321, 469, 29);
                frame.getContentPane().add(panelMessage);

                JLabel lblPersonSaved = new JLabel("Please Enter Firstname :");
                lblPersonSaved.setForeground(new Color(255, 255, 255));
                lblPersonSaved.setFont(new Font("Tahoma", Font.BOLD, 15));
                panelMessage.add(lblPersonSaved);
                frame.revalidate();
                panelMessage.revalidate();
                frame.repaint();

            }
            else if (tfMiddlenames.getText().equals(null) || tfMiddlenames.getText().equals("") || tfMiddlenames.getText().equals(false)) {
                JPanel panelMessage = new JPanel();
                panelMessage.setBackground(new Color(30, 144, 255));
                panelMessage.setBounds(10, 321, 469, 29);
                frame.getContentPane().add(panelMessage);

                JLabel lblPersonSaved = new JLabel("Please Enter Middlenames :");
                lblPersonSaved.setForeground(new Color(255, 255, 255));
                lblPersonSaved.setFont(new Font("Tahoma", Font.BOLD, 15));
                panelMessage.add(lblPersonSaved);

                frame.revalidate();
                panelMessage.revalidate();
                frame.repaint();

            }
            else if (tfSurname.getText().equals(null) || tfSurname.getText().equals("") || tfSurname.getText().equals(false)) {
                JPanel panelMessage = new JPanel();
                panelMessage.setBackground(new Color(30, 144, 255));
                panelMessage.setBounds(10, 321, 469, 29);
                frame.getContentPane().add(panelMessage);

                JLabel lblPersonSaved = new JLabel("Please Enter Surname :");
                lblPersonSaved.setForeground(new Color(255, 255, 255));
                lblPersonSaved.setFont(new Font("Tahoma", Font.BOLD, 15));
                panelMessage.add(lblPersonSaved);
                frame.revalidate();
                panelMessage.revalidate();
                frame.repaint();

            }
            else {


                //Validation has passed

            }
        }
    });
    btnAdd.setBounds(370, 265, 89, 23);
    panelClientNew.add(btnAdd);





}
}

questionAnswers(2)

yourAnswerToTheQuestion