bom dia lista ,falando em parte grafica ,estou com um problema aqui eu tenho que fazer um programa que leia um arquivo texto , e armazene as palavras numa arvore . bom ,fiz um classe que extends o JFrame e implements ActionListener ,dentro dessa classe eu coloquei os metodos que manipulam as arvores fiz uma classe para representar meu nó ,fiz uma classe para pegar o arquivo ,bufferizar ,e tokeniza-lo. bom ate ai ficou tudo certo ai eu queria pesquizar um elemento na arvore ,ai eu fiz um JMenuBar ,com uma funcao pesquizar ,essa funcao chama um outro JFrame que eu criei, passando como parametro uma string que ele captura com um JTextField ,e ao clicar no botao pesquisar , ele chamaria um metodo consultar ,que se encontra no 1º frame , passando como parametro para esse metodo a string do textField ,eu fiz varias chamadas de outras classes ,mas quando eu boto pra chamar esse metodo do 1º frame ,ele da aquele erro de non-static metodo referenciado ... sendo que de estatico eu coloquei so os void mains vcs poderiam me ajudar ?
seque o fonte para vcs darem uma olhada > Olá amigos, boa tarde. > > Onde posso encontrar material com exemplos inclusive, sobre > aplicabilidade do Java em aplicações gráficas ? > > Abraços, > > Anderson Brazão > > Technolog Tecnologia em Logística e Sistemas S/C Ltda. > Travessa "R", 400 - Cidade Universitária > USP - Universidade de São Paulo > São Paulo - Brasil >
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; //Model que quarda a palavra e linha que ele aparece // o metodo tokenizar retorna uma colecao de Models class Model { String palavra ; int linha; } //celula da minha arvore ( no ) //tem seus 2 filhos e o apontador para a lista class Celula { String palavra ; int ocorrencia ; Celula direita ; Celula esquerda ; Lista lista ; } // celula da lista class Lista { int linha ; Lista prox ; } //classe que transforma o arquivo num BufferedReader class PegarArquivo { private BufferedReader in; PegarArquivo(String arquivo) throws Exception { try { in = new BufferedReader(new FileReader(arquivo)); } catch (Exception e){ System.out.println(e); } } String getLine() { String s = null ; try{ s =in.readLine(); } catch (Exception e){ System.out.println(e); } return s; } } // classe da janela que entra perguntando qual nome // deseja ser pesquisado na arvore class entradaDados extends JFrame implements ActionListener { public entradaDados() { setTitle("Entre com a palavra a ser buscada"); setSize(230,150); JPanel painel = new JPanel(); JTextField edit = new JTextField(15); painel.add(edit,"North"); JButton butao = new JButton("Pesquisar"); butao.addActionListener(this); painel.add(butao,"Center"); JTextField resposta = new JTextField(15); resposta.setVisible(false); painel.add(resposta,"South"); Container cont = getContentPane(); cont.add(painel,"Center"); } public void actionPerformed (ActionEvent ae) { String arg =ae.getActionCommand(); if (ae.equals("Pesquisar")){ pesquisa(); } } void pesquisa() { /* Celula resp = Programa.consulta("teste"); if (resp != null) { resposta.setText("achou "+resp.ocorrencia + " vezes"); }else { resposta.setText("não encontrado"); } */ } } /*Classe principal do programa ,ela herda o jframe e implementa *o action listener ,que serve para capturar os eventos de cliques *e outras coisas */ public class Programa extends JFrame implements ActionListener { private JLabel label ; private static Celula raiz = new Celula(); /**************************************************** * * * void main * * * ****************************************************/ public static void main(String[] args) { JFrame frame = new Programa(); frame.show(); } // programa ,aqui eu arrumo o frame e o menu public Programa() { setTitle("Trabalho de estrutura de dados. Leandro Rangel Santos"); setSize(600,500); JMenuBar menu = new JMenuBar(); JMenu m =new JMenu("Arquivo"); JMenuItem m1 = new JMenuItem ("Abrir"); m1.addActionListener(this); m.add(m1); JMenuItem m2 = new JMenuItem("Pesquisar"); m2.addActionListener(this); m.add(m2); JMenuItem m3 = new JMenuItem ("Sair"); m3.addActionListener(this); m.add(m3); menu.add(m); setJMenuBar(menu); label = new JLabel(); Container container = getContentPane(); container.add(label,"South"); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } /* esse metodo ele recebe como parametro o nome do arquivo * ai separa cada linha do arquivo em strings ,e tokeniza a * string ,retornando uma Collection de Model ,que conten * a linha que a palavra apareceu , e a propria palavra */ public void tokenizar(String arquivo) { Collection col = new ArrayList(); try{ PegarArquivo in = new PegarArquivo(arquivo); String s; StringTokenizer st ; int i = 0; while((s = in.getLine()) != null){ st = new StringTokenizer(s); i++; while (st.hasMoreTokens()) { Model iten = new Model(); iten.palavra = st.nextToken(); iten.linha = i; col.add(iten); } } } catch(Exception e){ e.printStackTrace(); } insere(col); } /* esse metodo é para gerenciar os eventos do JFrame * ele esta capturando os action listener e executando * seus respectivos eventos */ public void actionPerformed (ActionEvent ae) { String arg =ae.getActionCommand(); if (arg.equals("Abrir")){ JFileChooser listaArquivos = new JFileChooser(); listaArquivos.setCurrentDirectory(new File(".")); listaArquivos.setFileFilter(new javax.swing.filechooser.FileFilter() { public String getDescription(){ return null; } public boolean accept(File f) { return f.getName().toLowerCase().endsWith(".txt"); } }); int r = listaArquivos.showOpenDialog(this); if (r == JFileChooser.APPROVE_OPTION){ String nome = listaArquivos.getSelectedFile().getPath(); label.setText(nome + " ## Arquivo armazenado na arvore com sucesso"); tokenizar(nome); } } if (arg.equals("Sair")) { System.exit(0); } if (arg.equals("Pesquisar")) { JFrame frameaux = new entradaDados(); frameaux.show(); } } /**************************************************** * * * Rotinas da Arvore * * * ****************************************************/ // esse metodo insere todos os elementos do texto na arvore // ele recebe como parametro uma collection de models ,e // é invocado assim que o usuario seleciona o arquivo public void insere(Collection col) { Model model= new Model(); Iterator interador = col.iterator(); while (interador.hasNext()) { Celula aux = new Celula(); aux = raiz ; model = (Model)interador.next(); if (raiz.palavra == null) { raiz.palavra = model.palavra ; raiz.ocorrencia = 1; } else if (raiz.palavra.equals(model.palavra)) { raiz.ocorrencia+=1; } else { while (aux.palavra != null ) { if (aux.palavra.compareTo(model.palavra) > 0) { if (aux.direita == null) { aux.direita = new Celula(); aux.direita.palavra = model.palavra ; aux.direita.ocorrencia = 1; break ; } aux = aux.direita; } else if (aux.palavra.compareTo(model.palavra) < 0) { if (aux.esquerda == null) { aux.esquerda = new Celula(); aux.esquerda.palavra = model.palavra ; aux.esquerda.ocorrencia =1 ; break; } aux = aux.esquerda ; } else if (aux.palavra.compareTo(model.palavra) == 0) { aux.ocorrencia+=1 ; break ; } } } } } // metodo de consulta ,ele recebe a palavra como parametro // e retorna uma instancia de Celula ,se a palavra nao // for encontrada , retorna uma instancia nula Celula consulta(String palavra) { Celula aux ; aux = raiz; while ((aux.palavra != null) && (aux.palavra != palavra)) { if (aux.palavra.compareTo(palavra) > 0) { if (aux.direita == null) { aux = null; break; } aux = aux.direita; } else if (aux.palavra.compareTo(palavra) < 0) { if (aux.esquerda == null) { aux= null ; break; } aux = aux.esquerda ; }else if (aux.palavra.compareTo(palavra) == 0 ) { return aux; } } return aux ; } }
------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------