Galera… to fazer um model pra Jtree e to precisando de um método que voltasse o pai de um nó… como eu implementaria isso??
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package MyBeans;
import commun.BDConection;
import commun.MyLogger;
import commun.SqlConstants;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JOptionPane;
/**
*
* @author gs99860
*/
public class Classe_Membros {
private int id;
private String desc;
private List<Membros> membros = new ArrayList<Membros>();
@Override
public String toString() {
return desc;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the desc
*/
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void removeMembro(Membros m) {
try {
Connection con = new BDConection().getCon();
PreparedStatement stm = con.prepareStatement(new commun.SqlConstants().getSQL(SqlConstants.EXCLUIR_MEMBRO));
stm.setInt(1, m.getId());
stm.execute();
membros.remove(m);
} catch (Exception e) {
String msg = "Erro ao excluir membro";
e.printStackTrace();
JOptionPane.showMessageDialog(null, msg);
new MyLogger(msg, e);
}
}
public void addMembro(Membros m) {
//não tem um id ainda. Precisa inserir no banco
if (m.getId() == 0) {
Connection con = null;
PreparedStatement stm = null;
try {
con = new BDConection().getCon();
stm = con.prepareStatement(new commun.SqlConstants().getSQL(SqlConstants.INSERT_MEMBRO));
new SqlConstants().beginTransaction(stm);
stm.setString(1, m.getDesc());
stm.setInt(2, m.getId_classe());
stm.execute();
stm = con.prepareStatement(new commun.SqlConstants().getSQL(SqlConstants.LAST_ID));
ResultSet rs = stm.executeQuery();
if (rs.next()) {
m.setId(rs.getInt("id"));
} else {
throw new IllegalAccessError("Não foi possível retornar o ID");
}
new SqlConstants().commitTransaction(stm);
membros.add(m);
} catch (Exception e) {
String msg = "Erro ao inserir membro";
e.printStackTrace();
JOptionPane.showMessageDialog(null, msg);
new MyLogger(msg, e);
try {
new SqlConstants().rollbackTransaction(stm);
} catch (SQLException ex) {
msg = "Erro rollback";
ex.printStackTrace();
new MyLogger(msg, e);
}
}
//caso já tenha um id, então apenas adiciona no model;
} else {
membros.add(m);
}
}
public List<Membros> getMembros() {
return Collections.unmodifiableList(membros);
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package MyBeans;
/**
*
* @author gs99860
*/
public class Membros {
private int id;
private String desc;
private int id_classe;
@Override
public String toString(){
return desc;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the desc
*/
public String getDesc() {
return desc;
}
/**
* @param desc the desc to set
*/
public void setDesc(String desc) {
this.desc = desc;
}
/**
* @return the id_classe
*/
public int getId_classe() {
return id_classe;
}
/**
* @param id_classe the id_classe to set
*/
public void setId_classe(int id_classe) {
this.id_classe = id_classe;
}
}
Agora o model
package TableModelsPersonalizados;
import MyBeans.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class MyTreeModel implements TreeModel {
private List<TreeModelListener> listeners = new ArrayList<TreeModelListener>();
private List<Classe_Membros> classe_membros;
public MyTreeModel(List<Classe_Membros> classe_membros) {
this.classe_membros = classe_membros;
}
public Object getChild(Object parent, int index) {
if (parent == classe_membros)
return classe_membros.get(index);
if (parent instanceof Classe_Membros)
{
return ((Classe_Membros) parent).getMembros().get(index);
}
throw new IllegalArgumentException("Invalid parent class"
+ parent.getClass().getSimpleName());
}
public int getChildCount(Object parent) {
if (parent == classe_membros)
return classe_membros.size();
if (parent instanceof Classe_Membros)
return ((Classe_Membros) parent).getMembros().size();
throw new IllegalArgumentException("Invalid parent class"
+ parent.getClass().getSimpleName());
}
public int getIndexOfChild(Object parent, Object child) {
if (parent == classe_membros)
return classe_membros.indexOf(child);
if (parent instanceof Classe_Membros)
return ((Classe_Membros) parent).getMembros().indexOf(child);
return 0;
}
public Object getRoot() {
return classe_membros;
}
public boolean isLeaf(Object node) {
return node instanceof Membros;
}
public void valueForPathChanged(TreePath path, Object newValue) {
}
public void removeTreeModelListener(TreeModelListener l) {
listeners.remove(l);
}
public void addTreeModelListener(TreeModelListener l) {
listeners.add(l);
}
}