ghf
Novembro 29, 2009, 2:36am
#1
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
CrOnNoS
Novembro 29, 2009, 7:28am
#2
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
ghf
Novembro 29, 2009, 12:37pm
#3
não deu certo não
continua o mesmo problema
nel
Novembro 29, 2009, 12:48pm
#4
O que é gerente.Listagem()? Retorna um vetor de Strings?
Abraços
ghf
Novembro 29, 2009, 12:55pm
#5
Tenho 2 arquivos:
o Gerenciador.java, onde está o método:
[code] 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;
}
[/code]
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);
ghf
Novembro 29, 2009, 12:58pm
#6
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
Novembro 29, 2009, 1:09pm
#7
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:
[code]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);[/code]
Abraços.
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:
[code]public static void main(String[] args) {
String concat = "";
String resultado = "";
for(String teste : Listagem()){
resultado = concat+= teste +"\n");
}
JOptionPane.showMessageDialog(null, resultado);
}[/code]