Como fazer que ao clicar num botão, pare o programa, quando clicar em outro , continue

0 respostas
F

Amigos do Grupo, muito boa tarde, fui obrigado a voltar com 2 dúvidas, pode ser ? desde já, muito obrigado.

Graças a 3 pessoas daqui do grupo, posso dizer que consegui fazer o meu programa funcionar, mas tenho duas dúvidas;

Primeiro : O programa lê um arquivo .txt chamado de cifra musical (C-----Bm—F------------G-- Gm7) e vai mostrando a cifra num JTxtField e a figura da cifra, um arquivo .jpg ao lado numa label.

Segundo : O programa esta funcionando perfeitamente, ele vai lendo as cifras e mostrando , ótimo, maravilha, demorou mas saiu !

Terceiro : Gostaria de mais duas coisas e termino, se Deus desejar, bem, seria eu colocar um botão (Txtparar) que ao clicar, parasse o programa onde esta, mostrando a tela a cifra parada, e ao clicar em outro botão(Txtcontinuar), o programa continuasse do ponto que parou.

Quarto : Para terminar, queria que o programa ao ler cada cifra, colocasse ela em focus (creio ser o comando setfocus) para que a cifra fique envolvida com uma cor azul e em destaque.

Obs : Abaixo segue o programa que esta funcionando perfeitamente.

package Formularios;

import Classes.Sonumeros;

import static Formularios.FrmVisMusicas.txtpmusica;

import java.awt.Image;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.ImageIcon;

public class FrmMusicaPlay extends javax.swing.JInternalFrame {

public static void main (String [] args){

}
private Object reader;
public FrmMusicaPlay() {

initComponents();

txttempo.setDocument(new Sonumeros());

txtareamus.setText ("");

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){

txtareamus.append (lin +"\n");

lin = ler.readLine();

}

}  catch (Exception  e) {

System.out.println(erroo na leitura);

}
}                                 

private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {                                        

    this.dispose();               //Quando clico no botão para sair da tela
}                                       


private void btniniciarActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // Cliquei no botão iniciar para rodar a rotina de ler as cifras.
     new Thread() {
        @Override
        public void run() {
  File arquivo = new File("C:\\MUSIC PLAY\\Musicas\\"+txtpmusica.getText()+".txt");
   try{
   BufferedReader ler = new BufferedReader(new FileReader(arquivo));
    int flag; 
    flag=0;
   String lin = ler.readLine();       //Começo a ler a primeira linha
    while (lin !=null) {
       String[ ] notas = lin.split("\\s");   // pego as cifras  (C-----F--------Fm7---Gm7)
       for (String nota : notas) {
       if (!nota.equals("")) {                //Si tiver espaço na linha, eu ignora, só leio as cifras
            //pensei em colocar o comando para parar o programa aqui.
             txtposicao.setText (nota);           //coloco o nome da cifra num 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);   //coloco a imagem num label (lblnota)
             long l = Long.parseLong(txttempo.getText() + "000");    //escolho quantos segundo tera a 
                                                                                                       função sleep()
             try {   
                 Thread.sleep(l);
             } catch (InterruptedException ex) {
                 Logger.getLogger(FrmMusicaPlay.class.getName()).log(Level.SEVERE, null, ex);
             }
              
             }  // Fim do if
        
          } //Fim do for
         lin = ler.readLine();    //Pulo 2 linhas, só quero ler as cifras, a letra do musica , não.
         lin= ler.readLine();
         }  //Fim do while
      }catch (IOException ex){ 
     
}

} //Fim do void run
} .start(); //fim do Thread
} //Fim do private

private void btnpararActionPerformed(java.awt.event.ActionEvent evt) {                                         
     clicado = true;
     cont++;                  OBS : pensei nisso, mas não funcionou.
      if(clicado) {
        Break;
     }
}                                        

// Variables declaration - do not modify                     
private javax.swing.JButton Btnsair;
private javax.swing.JButton btniniciar;
private javax.swing.JButton btnparar;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblnota;
private javax.swing.JTextArea txtareamus;
private javax.swing.JTextField txtposicao;
private javax.swing.JTextField txttempo;
// End of variables declaration                   

 } // Fim do Public Class

Muito obrigado e desculpa mais uma vez o trabalho.

Armando Barbosa Junior.

Criado 28 de agosto de 2019
Respostas 0
Participantes 1