Como transformar esse programa com matriz e o botão de pesquisa?

FrameAgenda

package Agenda2018;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class FrameAgenda extends JFrame {

private static final long serialVersionUID = 1L;

//Cadastro

private JTextField jtfNome ;
private JTextField jtfEndereco ;
private JTextField jtfTelefone ;
private JLabel Nome;
private JLabel Endereco;
private JLabel Telefone;

//Botões

private JButton Mostrar;
private JButton Pesquisa;
private JButton Adicionar;

//Variáveis

private String nome,endereco,telefone;

//Conclusão

private JTextArea jtaMostrar;

public FrameAgenda(String titulo){
	setTitle("Desafio Agenda");		
	inicializarComponentes();
	inicializarEventos();	
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


public void inicializarComponentes(){	
	setBounds(900, 250, 500, 600); //(coluna,linha,comprimento,largura)
    setLayout(null); // Desabilita o dimensionamento automático

//Criando o objeto
jtaMostrar= new JTextArea();
jtaMostrar.setEditable(false);
//Adicionando o objeto ao frame
add(jtaMostrar);
//Dimensionando o objeto
jtaMostrar.setBounds(10,185,300,250);

//Criando o objeto	
jtfNome = new JTextField();
Nome= new JLabel("Nome");
//Adicionando o objeto ao frame
add(jtfNome);
add(Nome);	
//Dimensionando o objeto	
jtfNome.setBounds(10,25,300,20);
Nome.setBounds(10,10,100,10);

//Criando o objeto	
jtfEndereco = new JTextField();
Endereco=new JLabel("Endereco");
//Adicionando o objeto ao frame
add(jtfEndereco);
add(Endereco);
//Dimensionando o objeto	
jtfEndereco.setBounds(10,70,300,20);
Endereco.setBounds(10,50,300,20);	

//Criando o objeto	
jtfTelefone = new JTextField();
Telefone = new JLabel("Telefone");
//Adicionando o objeto ao frame
add(jtfTelefone);
add(Telefone);
//Dimensionando o objeto	
jtfTelefone.setBounds(10,110,300,20);	
Telefone.setBounds(10,90,300,20);

//Criando o objeto
Mostrar = new JButton("Mostrar");
//Adicionando o objeto ao frame
add(Mostrar);
//Dimensionando o objeto	
Mostrar.setBounds(10,140,100,20);

//Criando o objeto
Pesquisa= new JButton("Pesquisa");
//Adicionando o objeto ao frame
add(Pesquisa);
//Dimensionando o objeto	
Pesquisa.setBounds(130,140,100,20);

//Criando o objeto   
Adicionar = new JButton("Adicionar");
//Adicionando o objeto ao frame
add(Adicionar);
//Dimensionando o objeto	
Adicionar.setBounds(330,25,100,20);  

}

private void inicializarEventos() {
Adicionar.addActionListener(new ActionListener() {		
@Override
public void actionPerformed(ActionEvent e) {
	nome = jtfNome.getText();
	endereco=jtfEndereco.getText();
	telefone=jtfTelefone.getText();
	jtfNome.setText("");
	jtfEndereco.setText("");
	jtfTelefone.setText("");
}
});
Mostrar.addActionListener(new ActionListener() {		
@Override
public void actionPerformed(ActionEvent e) {		
	jtaMostrar.setText("Nome:  "+nome+"\n" +
			"Endereço:  "+endereco+"\n"+
				"Telefone:  "+telefone+"\n");
		}
	});		
}	

}

TestaAgenda

package Agenda2018;

public class TestaAgenda {
public static void main(String[]args){

FrameAgenda df = new FrameAgenda(“Agenda”);

df.setVisible(true);//torna o frame visível	
}

}