Olá gujeiros,
tudo bom?!
Estou com uma dúvida, criei uma JTree e uma outra classe implementando TreeModel coloquei o modelo dentro da JTree, assim: JTree arv = new JTree(modelo); que é a variável de referência da classe aonde estou implementando o TreeModel, gostaria de saber como a JTree chama os métodos da classe, pois não sei como faço para inserir os nós dentro dela…
Códigos:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package arvore;
/**
*
* @author Modelagem
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.*;
import javax.swing.border.Border;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class Arvore extends JFrame{
JTree arvore;
ModeloArvore modelo =new ModeloArvore(new File("C:\\"));
public Arvore() {
Container tela = getContentPane();
tela.setLayout(null);
JPanel arv = new JPanel(new FlowLayout(FlowLayout.LEFT));
JPanel bot = new JPanel();
arv.setBorder(javax.swing.BorderFactory.createTitledBorder("Borda"));
arv.setSize(800, 400);
arv.setBounds(0,0,800,400);
bot.setBounds(0,420,200,200);
JScrollPane painelRolagem = new JScrollPane();
arvore = new JTree(modelo);
arv.add(arvore);
JButton botao01 = new JButton("ADD");
botao01.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
adicionarArvore();
}
});
JButton botao02 = new JButton("Remover");
botao02.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
removerArvore();
}
});
JButton botao03 = new JButton("Ordenar por nome Crescente");
botao03.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
File r = new File("C:\\");
new ModeloArvore(r,"nome");
}
});
JButton botao04 = new JButton("Odenar por nome Decrescente");
botao04.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
File r = new File("C:\\");
new ModeloArvore(r,"nomedesc");
}
});
JButton botao05 = new JButton("Ordenar por data crescente");
botao05.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
File r = new File("C:\\");
new ModeloArvore(r,"data");
}
});
JButton botao06 = new JButton("Ordenar por data decrescente");
botao02.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
File r = new File("C:\\");
new ModeloArvore(r,"datadesc");
}
});
bot.add(botao01);
bot.add(botao02);
tela.add(arv);
tela.add(bot);
setSize(800,600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void adicionarArvore() {
TreePath caminho = arvore.getSelectionPath();
if(caminho == null) {
new ModeloArvore(new File("C:\\"),"diretorio");
}
else {
String path = caminho.toString();
new ModeloArvore(new File(path),"diretorio");
}
}
public void removerArvore() {
}
public static void main(String[] args) {
// TODO code application logic here
new Arvore();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package arvore;
import java.io.File;
import java.text.Collator;
import java.util.*;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
/**
*
* @author Modelagem
*/
public class ModeloArvore implements TreeModel {
private List<TreeModelListener> listeners = new ArrayList<TreeModelListener>();
File raiz;
String ordenacao;
public List<String> arquivos = new ArrayList<String>();
String filho;
public ModeloArvore(File r,String no) {
raiz = r;
filho = no;
}
/*public ModeloArvore(File r,String ord) {
this.ordenacao = ord;
raiz = r;
}*/
ModeloArvore(File r) {
raiz = r;
}
@Override
public Object getRoot() {
return raiz;
}
@Override
public Object getChild(Object parent, int index) {
File diretorio = (File) parent;
String[] listar = diretorio.list();
for(int i = 0; i < listar.length;i++) {
arquivos.add(listar[i]);
}
System.out.println("oooo");
return arquivos.get(index);
}
@Override
public int getChildCount(Object parent) {
File arquivo = (File)parent;
if(arquivo.isDirectory()) {
String[] lista = arquivo.list();
}
return 0;
}
@Override
public boolean isLeaf(Object node) {
File folha = (File) node;
return folha.isFile();
}
@Override
public void valueForPathChanged(TreePath path, Object newValue) {
}
@Override
public int getIndexOfChild(Object parent, Object child) {
File pai = (File) parent;
File filho = (File) child;
String[] crianca = filho.list();
for(int i =0; i < crianca.length;i++) {
if(filho.getName().equals(crianca[i])) {
return i;
}
}
return -1;
}
@Override
public void addTreeModelListener(TreeModelListener l) {
listeners.add(l);
}
@Override
public void removeTreeModelListener(TreeModelListener l) {
listeners.remove(l);
}
public class Arquivo
{
/*Criamos essa classe para ordenar os valores tempo e nome, para que os valores sejam
sempre o mesmo na hora de acessá-los*/
long tempo;
String nome;
private List<String> arquivos = new ArrayList<String>();
public Arquivo(String nome,long tempo)
{
this.tempo = tempo;
this.nome = nome;
arquivos.add(nome);
System.out.println("Arquivo");
}
public String getNome(){
return nome;
}
public long getTempo() {
return tempo;
}
}
private class Ordenacao implements Comparator<Arquivo>
{
/*Essa classe foi criada para ordenar o arquivoLista e gerar na árvore a ordenação
por nome e data*/
private String tipoOrdenacao;
public Ordenacao(String tipoOrdenacao)
{
this.tipoOrdenacao = tipoOrdenacao;
}
@Override
public int compare(Arquivo a1, Arquivo a2)
/*Método que vai gerar um inteiro, negativo <, zero = e posivo >*/
{
if(tipoOrdenacao.startsWith("data"))
{
if(a1.tempo>a2.tempo) {
return 1;
}
if(a1.tempo<a2.tempo) {
return -1;
}
return 0;
}
if(tipoOrdenacao.startsWith("nome"))
{
return a1.nome.compareTo(a2.nome);
}
return 0;
}
}
private class TreeFile extends File
{
public TreeFile(File parent, String child)
{
super(parent, child);
System.out.println("Recusivo");
}
public String toString()
{
return getName();
}
}
}
abraço,