Olá amigos do GUJ,
Eu novamente tirando dúvidas...
Agora é o seguinte:
Tenho duas classes, um tratador de eventos e uma de controle.
Na classe tratadora de eventos, tenho os botões, que quando eu clico, deveria executar a ação da classe controle.
Porém está acontecendo um erro: "[color=red]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException[/color]" .
Conversei com um professor, e ele pediu pra pesquisar sobre Singleton, que poderia me ajudar nisso. Para criar uma instância da classe que eu quero.
Eu dei uma estudada, já sei pra que serve e tudo mais, só que não consigo implementar pra parar com o problema.
Segue minhas classes que quero instanciar uma em outra:
Class TratadorAgendaimport java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import br.com.agenda.principal.Control;
public class TratadorAgenda implements ActionListener {
private JButton add, search, list, remove, exit, qtd;
private Control ctrl;
public TratadorAgenda(JButton add, JButton search, JButton list,
JButton remove, JButton qtd) {
this.add = add;
this.search = search;
this.list = list;
this.remove = remove;
this.qtd = qtd;
}
public TratadorAgenda(Control ctrl){
this.ctrl = ctrl;
}
public TratadorAgenda(JButton exit) {
this.exit = exit;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == add) {
ctrl.addContact();
}
if (e.getSource() == search) {
ctrl.searchContact();
}
if (e.getSource() == list) {
ctrl.listContact();
}
if (e.getSource() == remove) {
ctrl.removeContact();
}
if (e.getSource() == qtd) {
ctrl.quantity();
}
if (e.getSource() == exit) {
System.exit(0);
}
}
}
import java.io.IOException;
import java.util.List;
import javax.swing.JOptionPane;
import br.com.agenda.telas.PanelCad;
import br.com.agenda.tratador.TratadorAgenda;
public class Control {
private Agenda agenda = new Agenda();
private Contact contact;
private PanelCad set;
public Control(){
new TratadorAgenda(this);
}
public void addContact() {
contact = new Contact();
contact.setName(set.getNome());
contact.setAge(set.getAge());
contact.setPhone(set.getPhone());
try {
agenda.addContact(contact);
} catch (IOException e) {
e.printStackTrace();
}
set.setStatus("Contact successfully added!");
}
public void searchContact() {
String nome = set.getNome();
Contact c = agenda.searchContact(nome);
if (c != null) {
System.out.println("Name: " + c.getName());
System.out.println("Age: " + c.getAge()); //Isso quero gravar em Table logo mais.
System.out.println("Phone:: " + c.getPhone());
} else {
set.setStatus("Contact not found!");
}
}
public void listContact() {
List<Contact> contact = agenda.getContacts();
if (agenda.quantity() == 0) {
set.setStatus("Your agenda is empty! Add contacts!");
}
for (Contact a : contact) {
System.out.println("Name: " + a.getName());
System.out.println("Age: " + a.getAge()); //Isso quero gravar em Table logo mais.
System.out.println("Phone:: " + a.getPhone());
}
}
public void removeContact() {
String name = set.getNome();
if (agenda.exists(name) == true) {
Contact c = agenda.searchContact(name);
int choice = JOptionPane.showConfirmDialog(null,
"Remove contact from agenda?", "Removing",
JOptionPane.YES_NO_OPTION);
if (choice == JOptionPane.YES_OPTION) {
agenda.removeContact(name);
set.setStatus("Contact successfully removed!");
if (c != null) {
System.out.println("Name: " + c.getName());
System.out.println("Age: " + c.getAge()); //Isso quero gravar em Table logo mais.
System.out.println("Phone:: " + c.getPhone());
}
if (choice == JOptionPane.NO_OPTION) {
set.setStatus("Action Cancelled!");
} else {
}
} else {
set.setStatus("Contact not found!");
}
}
}
public void quantity() {
int quant = 0;
quant = agenda.quantity();
if (quant == 0) {
set.setStatus("The agenda is empty! Add contacts!");
}
if (quant == 1) {
set.setStatus("There is " + quant + " contact added!");
}
if (quant > 1) {
set.setStatus("There are " + quant + " contacts added!");
}
}
}
Alguém consegue me ajudar a implementar um Singleton aí pra eu não ter mais aquele problema?
Obrigado.