Um Tree na JTable

1 resposta
agranado2k

Fala galera!!!

Eu estou com um problem de colocar uma árvore em uma jtable. Eu tenho uma lista de objetos que é simples de colocar no jtable… mas cada objeto desse tem uma lista de outro tipo de objeto que eu gostaria que aparecesse em baxixo de cada objeto da jtable, um em cada linha, e que a tabela fosse capaz de colpsar e expandir esses objetos no objeto pai… eu já andei dando uma olha no forum aqui e achei um exemplo http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html mas eu tô meio confuso e não consegui fazer o que queria e como sempre estou precisando de resolver isso rádipo… Smile
Será que alguém pode me dá um help aí… com outros exemplo… ou como seria mais correto modificar o exemplo que citei… tô meio perdido galera… por favor me ajudem!!! Smile

Abraço a todos!!!

1 Resposta

agranado2k

Fala galera....

então... eu tô tentando modificar o exemplo do link que postei anteriormente e estou colocando o meu TableModel que será usado na lugar do FileSystemModel.... só que não está dando muito certo não.... será que alguém poderia me ajudar.... acho que ainda não peguei o esquema ... por favor me ajudem!!!!!

abraços!!!!!

public class JObjectFlowTableModel extends AbstractTreeTableModel implements TreeTableModel{
    
    private JObjectFlow[] m_objectFlowList;
    // Names of the columns.
    static protected String[]  cNames = {"#", "Título do Contrato",""};

    // Types of the columns.
    static protected Class[]  cTypes = {Integer.class, TreeTableModel.class,ImageIcon.class };
    
    /** Creates a new instance of JObjectFlowTaskModel */
    public JObjectFlowTableModel( JObjectFlow[] objectFlowList ){
        super( new ObjectFlowNode( objectFlowList ) );
        m_objectFlowList = objectFlowList;
    }
    
    public JObjectFlow getObjectFlow( Object node ){
        return ((JObjectFlow) node );
    }
    
    public List<JStage> getChildren( Object node ){
        return ( ( JObjectFlow ) node ).getFlow().getStages();
    }
    
    public int getChildCount( Object node ){
        return ( node != null ) ? getChildren( node ).size() : 0;  
    }
    
    public Object getChild( Object node, int i){
        if( node instanceof JObjectFlow)
            return getStages( (JObjectFlow) node ).get(i);
        else
            return null;
    }   
    
    public Object getValueAt(Object node, int column) {	
        if( node instanceof JObjectFlow ){
            JObjectFlow objFlow = (JObjectFlow ) node;
                try {
                switch(column) {
                    case 0:
                        return 1;
                    case 1:
                        return objFlow.getName();
                }
            }
            catch  (SecurityException se) { }
        }
        else{
            if( node instanceof JStage ){
                JStage stage = (JStage) node;
                try {
                    switch(column) {
                        case 0:
                            return "";
                        case 1:
                            return stage.getName();
                    }
                }
                catch  (SecurityException se) { }
            }
        }
          
	return ""; 
    }
    
    public Object getValueAt (int rowIndex, int columnIndex){
        return getValueAt( getObjectFlow( rowIndex ), columnIndex );
    } 
        
    public int getColumnCount(){  
        return cNames.length;
    }
    
    public Object getObject(int row ) {
        if (row >= 0) {
            return (JObjectFlow) this.m_objectFlowList[row];
        }        
        return null;
    }

    public String getColumnName(int column) {
        return cNames[column];
    }
    
    public Class getColumnClass( int column ){
        return cTypes[column];
    }
}
[/code]
Criado 24 de agosto de 2006
Ultima resposta 25 de ago. de 2006
Respostas 1
Participantes 1