Problema ao chamar método

7 respostas
G

Olá.
Estou com um que envolve o seguinte método:

public static String[] Listagem() {
  File diretorio = new File(".//Filmes");
 File[] arquivos = diretorio.listFiles();
 int length = arquivos.length;
    String[] Filme = new String[length];
int i;
String[] frase = new String[length];
            for(i = 0; i < length; ++i){
               Filme[i] = arquivos[i].getName().replace(".txt", "");
frase[i] = String.format(i+1 + " - " + Filme[i]);

            }
return frase;
}

o método está fazendo o que eu quero, que é listar os arquivos da pasta e mostrar apenas o nome do arquivo, sem a extensão.

Porém, quando eu chamo esse método em uma outra classe, acontece o seguinte:

se eu uso:

nomeDeleteStr = JOptionPane.showInputDialog(null,gerente.Listagem(), "Cinema", JOptionPane.QUESTION_MESSAGE);

ele funciona e mostra na janela os arquivos listados.

agora se eu faço algo do tipo(que é o que eu gostaria de fazer):

nomeDeleteStr = JOptionPane.showInputDialog(null,"Escolha uma opção abaixo:\n" + gerente.Listagem(), "Cinema", JOptionPane.QUESTION_MESSAGE);

ele só mostra na janela a frase: Escolha uma opção abaixo: [Ljava.lang.String@723d7c.

Onde estou errando? Como posso fazer funcionar o forma que está dando erro?

valeu

7 Respostas

CrOnNoS

Pelo que você diz parece que na segunda chamada o método toString não está sendo chamado e está sendo mostrado a referência do vetor apenas
adicione .toString() após o Listagem() e teste

G

não deu certo não
continua o mesmo problema

nel

O que é gerente.Listagem()? Retorna um vetor de Strings?
Abraços

G

Tenho 2 arquivos:
o Gerenciador.java, onde está o método:

public static String[] Listagem() {  
   File diretorio = new File(".//Filmes");  
 File[] arquivos = diretorio.listFiles();  
 int length = arquivos.length;  
     String[] Filme = new String[length];  
 int i;  
 String[] frase = new String[length];  
             for(i = 0; i < length; ++i){  
                Filme[i] = arquivos[i].getName().replace(".txt", "");  
 frase[i] = String.format(i+1 + " - " + Filme[i]);  
   
             }  
 return frase;  
 }

e o Cinema.java

onde está o
Gerenciador gerente = new Gerenciador();
e o:
nomeDeleteStr = JOptionPane.showInputDialog(null,"Escolha uma opção abaixo:\n" + gerente.Listagem(), "Cinema", JOptionPane.QUESTION_MESSAGE);
G

isso, ele retorna um vetor de strings.

se eu chamo o metódo direito:

nomeDeleteStr = JOptionPane.showInputDialog(null,gerente.Listagem(), "Cinema", JOptionPane.QUESTION_MESSAGE);

ele funciona certinho.
mas eu quero colocar uma mensagem antes de chamar o método
algo tipo

nomeDeleteStr = JOptionPane.showInputDialog(null,"Escolha uma opção abaixo:\n" + gerente.Listagem(), "Cinema", JOptionPane.QUESTION_MESSAGE);

aí da o erro que citei no primeiro post

nel

Então, entendo muito pouco de Swing mas o que acontece é que ele está mostrando a referencia do seu vetor.
Usa StringBuffer para construir sua string e depois usa-la no JOptionPane.

Algo assim:
StringBuffer msg = new StringBuffer();
msg.add("Escolha uma opção abaixo: ");
msg.add("\n");
for(String s : gerente.Listagem){
   msg.add(s);
   msg.add("\n");
}

nomeDeleteStr = JOptionPane.showInputDialog(null, msg.toString(), "Cinema", JOptionPane.QUESTION_MESSAGE);

Abraços.

evertonsilvagomesjav

Bom o que esta acontecendo é o que o amigo olhos de aguia Nel falou, vc esta exbindo um array nao o conteudo dele correto? Neste caso ele esta exibindo o toString do seu objeto "array".

Uma outra solução seria vc fazer um for e exibir o conteudo dele por exemplo:

public static void main(String[] args) {
	
               String concat = "";
	       
                String resultado = "";
		
                 for(String teste : Listagem()){
			
			
			resultado = concat+= teste +"\n");
			
		}
                 
                 JOptionPane.showMessageDialog(null, resultado);
	}
Criado 29 de novembro de 2009
Ultima resposta 29 de nov. de 2009
Respostas 7
Participantes 4