Como colocar uma cor na cifra (string) lida.

31/08/2019

0

Srs, boa tarde, como sempre dizem, no meu caso é verdade, sou novo no Java, tenho somente 1 mês que venho estudando , pesquisando e dando murro em ponta de faca no Java. Estou fazendo um programa em java para me ajudar a aprender teclado musical. o que faz até agora o meu programa;

1 - A parte que estou no momento e onde tenho duvida para terminar é a seguinte.

Tenho em um diretório, uma pasta com arquivo .txt que corresponde a músicas com as cifras acima das letras, conforme mostrarei abaixo e uma outra pasta contendo arquivos JPG que corresponde as imagens das posições das cifras no teclado musical.

Arquivo .txt Arquivo JPG
C G/B Am7 Am7/G Desenho do teclado musical da cifra
Ao único que é digno de receber
F C/E
A honra e a glória ......................

Bem, o programa joga este arquivo .txt numa JTextPane e depois faz a leitura de linha a linha deste .txt, lendo somente as linhas onde estão as cifras, a letra da musica não me interessa e o programa não as ler.

Por exemplo, o programa leu a cifra "G/B", além dele colocar esta cifra em uma caixa de texto (txtposicao), ele mostra a imagem da posição da cifra (nota musical), numa label (lblnota), vai mostrando uma a uma e eu ainda coloco o tempo da musica e assim posso ver por uns 2,3,4 seg a imagem da posição da cifra (nota musica), depende do compasso musical da música (binário, ternário,quartenário e etc ...)

Hoje o programa esta fazendo isso sem erro e ao contento. Agora vamos ao meu GRANDE problema, que já duram 2 semanas;

Gostaria que o programa, ao ler as cifras, fosse mudando a cor da cifra lida ou colocando em evidencia a cifra lida com uma cor de fundo azul, por exemplo no JTextPane, sei que é possível, ví vários modos de fazer isso, testei vários deles , mas não sei como colocar este método dentro do meu programa, nem em que linha devo fazer a chamada para ele fazer o que quero.

Primeiro, será que fui claro ???? se fui, vc podem me ajudar ??? Abaixo mando um pedaço do método que usei para isso, somente a parte onde faço a leitura das cifras.

Código :
private void btniniciarActionPerformed(java.awt.event.ActionEvent evt) {
// Cliquei no botão iniciar

new Thread() {
private Object evento;
@Override
public void run() {

File arquivo = new File("C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\MUSIC PLAY\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Musicas\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"+txtpmusica.getText()+".txt"); //Abro o arquivo .txt (minha musica cifrada)
try{
BufferedReader ler = new BufferedReader(new FileReader(arquivo));
String lin = ler.readLine(); //Leio a primeira linha
while (lin !=null) {
String[ ] notas = lin.split("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\s"); //Retiro da linha as cifras e não somente um caractere.
for (String nota : notas) {
if (!nota.equals("")) { // se lendo a linha, eu tenho espaço, pulo e só pego as cifras
long l = Long.parseLong(txttempo.getText() + "000"); // coloco num JTextField (txttempo) o tempo de espera ou o compasso da musica.
try {
Thread.sleep(l); //Paro o programa por 2,3,4,6 seg, dependo do compasso da musica.
} catch (InterruptedException ex) {
Logger.getLogger(FrmMusicaPlay.class.getName()).log(Level.SEVERE, null, ex);
}
String nova = nota.replace("/", "_"); //quando uma cifra tem "/" exemplo : C/F eu troco para (_), pois estas cifras são gravadas no Windows com (_)
//nota=nova;

CREIO QUE AQUI SERIA O LUGAR PARA FAZER A CHAMADA PARA MUDAR DE COR A CIFRA, POIS JÁ A TENHO NA VARIÁVEL NOTA.

txtposicao.setText (nota); //Coloco a cifra lida neste JTextField (txtposicao)
ImageIcon imageIcon = new ImageIcon(new ImageIcon("c:/MUSIC PLAY/Notas/"+txtposicao.getText()+
".jpg").getImage().getScaledInstance(599,243,Image.SCALE_DEFAULT));
lblnota.setIcon(imageIcon); //Aqui coloco a imagem da cifra em um Label (lblnota)
} // Fim do if
} //Fim do for
lin = ler.readLine();
lin= ler.readLine(); // Aqui pulo uma linha que é a linha da letra da musica que não me interessa e vou para linha onde estão as próximas cifras.
} //Fim do while
}catch (IOException ex){

}
Minha maior dúvida é onde devo colocar no meu programa o método que coloca a cor na cifra e onde chama-lo, pelo meu pouco conhecimento de programação em Java, consegui fazer este programa, pesquisando na internet, nosso pai nosso de todos os dias. Amém !

Srs, espero resolver este problema, porque só falta este método para eu terminar o program, meu muito obrigado.

Armando
Armando

Armando

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar