RESOLVIDO
----------------------------
Olá amigos estou com um problema, meio que estranho...
Está dando um erro de NullPointerException na chamada do metodo setObservador na minha classe Maquina.
Mas ela tem uma condição para verificar se o Objeto passado não é null , mas mesmo assim ocorre o Erro, tambem coloquei essa confição em varios pontos para rastrear esse erro..
[color=red]Vou colocar as partes principais do escopo do erro:[/color]
Na classe MAIN:private void bAdicionarActionPerformed(java.awt.event.ActionEvent evt) {
// Depois de selecionar o node eu executo esta açao.
DefaultMutableTreeNode node = (DefaultMutableTreeNode) selecaoPath.getLastPathComponent();
if (node.isLeaf()){
Maquina maquina2 = (Maquina) node.getUserObject(); // pega A referencia do Node Selecionado
// Maquina maquina2 = new Maquina(); // Com essa funciona.
System.out.println("[Main onclick]: " + maquina2 + ": " + maquina2.hashCode());
NetIcon2 icone = new NetIcon2(maquina2);
icone.addMouseListener(icone);
pDisplayRede.add(icone);
}
}
public class NetIcon2 extends JLabel implements MouseListener, Observer
public Maquina maquinaLocal;
{....}
public NetIcon2(Maquina maquina) {
inicializarComponente();
maquinaLocal = maquina;
this.setHostName(maquinaLocal.getNome());
this.setIp(maquinaLocal.getIP());
this.setStatus(maquinaLocal.getStatus());
this.setDescricao(maquinaLocal.getDescricao());
System.out.println("[NetIcon]: " + maquinaLocal.toString() + " " + maquinaLocal.hashCode());
System.out.println("[NetIcon]: " + this.toString());
maquinaLocal.setObservador(this);
}
public class Maquina extends Observable
{......}
public void setObservador(Observer observador){
if (observador == null) System.out.println("Observador == null");
else {
System.out.println("[Maquina].setObservador :" + observador.toString());
System.out.println("[Maquina] Atual: " + this.toString());
this.addObserver(observador); // [b]O erro é bem aqui[/b]
}
}
[Main onclick]: Google: 7056873
[NetIcon]: Google 7056873
[NetIcon]: jRzNetTools.NetIcon2[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0, {etc...} text=<Html><b>Google</b><br><font Color=blue>192.169.1.2</font>,verticalAlignment=CENTER,verticalTextPosition=CENTER]
[Maquina].setObservador :jRzNetTools.NetIcon2[,0,0,0x0,invalid,alignmentX=0.0,{etc...} text=<Html><b>Google</b><br><font Color=blue>192.169.1.2</font>,verticalAlignment=CENTER,verticalTextPosition=CENTER]
[Maquina] Atual: Google
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.Observable.addObserver(Observable.java:67)
at jRzNetTools.Maquina.setObservador(Maquina.java:159)
at jRzNetTools.NetIcon2.<init>(NetIcon2.java:45)
at jRzNetTools.Main.bAdicionarActionPerformed(Main.java:464)
A lógica é a seguinte tenho a Classe NetIcon(visual) e Maquina(dados) que implementam um Model-View ( com o pattern Observable)
Bem o contructor do NetIcon recebe uma Maquina e guarda uma referencia dela (em maquinaLocal) e desta maquina chama o metodo setObservador(this); , que é que "ocorre" o erro...
O referencia da maquina parace se perder quando é chamado a:
addObserver(observador); (No caso do objeto retornado do node JTree)
pois se eu comentar essa linha funciona beleza...
so que o Patter Observable n ira funcionar
[color=red][este post foi completamente editado as respostas abaixo podem não fazer sentido.. :?][/color]
Data: 26/07/2007 20:21:33
-------------
Meus deus esse trabalho todo por uma Besteira...
O Problema era no XML , que guardava a estrutura da Rede( com as Maquinas e tal) depois que eu alterei a classe maquina para usar o Observable ele teria que salvar um novo atributo no XML um tal de
<obs/>
Só isso....
