Local do Som? [RESOLVIDO]

Pessoal, estou fazendo uma aplicação java, só que ela está com 2 erros…

1) Quando a pessoa faz o loggin, toca o som

AudioInputStream stream1 = AudioSystem.getAudioInputStream(new File("src/src/logar.wav"));

2) Tem um joguinho, que utiliza imagens

ImageIcon copo = new ImageIcon("src/views/resources/copo.gif"); ImageIcon copoe = new ImageIcon("src/views/resources/copoE.gif"); ImageIcon copoc = new ImageIcon("src/views/resources/copoC.gif");
Quando eu rodo pelo netbeans, tá beleza…
Ae eu mando [color=red]limpar e construir[/color], e quando eu abro o .jar gerado, nenhuma dessas coisas acontecem (não toca som, e não aparece as imagens).
Com certeza é por que o diretório da imagem e do som teriam que mudar também. Mas como eu faço isso, sem ter que ficar mudando o diretório toda vez de lugar?

Ex.: Em delphi, quando criava o executável, você podia colocar em qualquer máquina, porque o som e as imagens ficavam “embutidos” no programa…
Como faço para fazer isso em java?

Agradeço desde já.

[b]((
(>’.’)
(~(")(")


Yours, Pedro []'s~[/b]

é porque não existe pasta “src” no seu “Jar” gerado :wink:
abra ele com o winzip ou winrar e veja a estrutura de pasta criada.

Tente pegar os arquivos de maneira relativa a partir do pacote raiz e não de “src”

Esse geito que você falou eu fiz…
É o geito TOSKO de resolver o problema…
Se eu pegar o executável e colocar no desktop por exemplo não vai aparecer as imagens e nem tocar o som.

Queria algum geito que ela ficasse EMBUTIDA no programa…
Por exemplo, eu pego o executável aqui e levo na casa do meu colega e executo lá… Teria de aparecer essas 2 imagens… Mas não fica.

Não tem um geito dela ficar junta?
Quando você coloca uma imagem numa jLabel por exemplo, você pode tirar o programa, rodar de qualquer lugar que as imagens ficam lá…

cria uma Package pra as tuas imagens, exemplo:

package1.package2

e chama assim:

jLabel.setIcon(new ImageIcon(getClass().getResource("/package1/package2/imagem.png")));

o método

.getResource("/package1/package2/imagem.png")

pode ser chamado de qualquer classe que vai dar no mesmo.

Portanto, para não confundir, use

this.getClass().getResource("/package1/package2/imagem.png")

ok?

Opa… Funcionou.

Ficou assim:

ImageIcon copo = new javax.swing.ImageIcon(getClass().getResource("/views/resources/copo.gif")); ImageIcon copoe = new javax.swing.ImageIcon(getClass().getResource("/views/resources/copoE.gif")); ImageIcon copoc = new javax.swing.ImageIcon(getClass().getResource("/views/resources/copoC.gif"));
Agora como que faço para som?
Tá assim por enquanto:

AudioInputStream stream1 = AudioSystem.getAudioInputStream(new File("src/src/logar.wav"));

http://java.sun.com/j2se/1.4.2/docs/api/javax/sound/sampled/AudioInputStream.html

Desculpe, mas meu inglês não é fluente.
Não tem como você me passar como seria a sintaxe?

Era assim antes:

  AudioInputStream stream1 = AudioSystem.getAudioInputStream(new File("src/src/logar.wav")); 

Pensei em algo do tipo:

[code]AudioInputStream stream1 = new javax.sound.sampled.AudioInputStream(getClass().getResource(“src/src/logar.wav”));
//OU
AudioInputStream stream1 = new javax.sound.midi.AudioSystem.getAudioInputStream(getClass().getResource(“src/src/logar.wav”));

[/code]
Mas o javax fica sublinhado de vermelho…
Não sei como é a sintaxe.

Vlw.

Vou dar a imagem como resolvido e criar outro para falar especialmente sobre o som.
Obrigado pela atenção.