Srs, muito boa noite.
Estou fazendo um programa em java, que lê um arquivo texto como mostrado abaixo.
"trecho de uma música baixado no cifra club e transformado em um arquivo .txt
C G/B Am7 Am7/G
Ao único que é digno de receber
F C/E
A honra e a glória
Dm7 G4 G
A força e o poder.
É um programa pessoal, que lê cifras para aprender teclado musical. O programa lê somente a linha com as cifras (C G/B Am7 Am7/G), conforme o programa vai lendo cada cifra, ele teria que mostrar ao lado, numa label (lblnota), a imagem da posição do teclado musical em JPG.
O programa hoje, faz a leitura das linhas com as cifras, mas na hora que mando colocar uma cifra dentro de um JTextField e a imagem do teclado daquela cifra em uma Label, ele só mostra a ultima cifra, tanto na JTextField (txtposicao) quanto a imagem no Label (lblnota). Seria o caso de mandar o programa executar cada linha dentro do For ???
Alguém saberia me dizer porque o programa só mostra na txtposicao e na lblnota a ultima cifra que ele Lê do texto ??? Abaixo segue uma parte do programa.
import static Formularios.FrmVisMusicas.txtpmusica;
import java.awt.Image;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import javax.swing.ImageIcon;
public class FrmMusicaPlay extends javax.swing.JInternalFrame {
public static void main (String [] args){
}
private Object reader;
private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
private void btniniciarActionPerformed(java.awt.event.ActionEvent evt) {
// Quando clico no botão iniciar
File arquivo = new File("C:\\MUSIC PLAY\\Musicas\\"+txtpmusica.getText()+".txt");
try{
BufferedReader ler = new BufferedReader(new FileReader(arquivo));
String lin = ler.readLine();
while (lin !=null) {
String[ ] notas = lin.split("\\s");
for (String nota : notas) {
if (!nota.equals("")) {
txtposicao.setText (nota);
System.out.println(nota);
ImageIcon imageIcon = new ImageIcon(new ImageIcon("c:/MUSIC
PLAY/Notas/"+txtposicao.getText()+
".jpg").getImage().getScaledInstance(599,243,Image.SCALE_DEFAULT));
lblnota.setIcon(imageIcon);
Thread.sleep(3000); //coloco este comando para dar um tempo mostrando a cifra no
label e no JTestField
}
} //Fim do for
lin = ler.readLine(); // faço o lin = ler.readLine(); duas vezes, para ele pular 2 linhas.
lin = ler.readLine(); // Isso fará ele ler somente a linha com as cifras
} //Fim while
}catch (Exception ex){
}
} //Fim do private void btniniciarActionPerformed
// Variables declaration - do not modify
private javax.swing.JButton Btnsair;
private javax.swing.JButton btniniciar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblnota;
private javax.swing.JTextArea txtareamus;
private javax.swing.JTextField txtposicao;
// End of variables declaration
} // Fim do Public Class
Agradeço desde já a ajuda, pois não tenho mais ninguém para me ajudar.
Muito obrigado e fiquem todos com Deus.
Armando Barbosa Junior