Netbeans não deixa encerrar processo

28 respostas
netbeansjavadesktopprogramação
G

Estou criando um auto click, ele basicamente está pronto, porem para eu encerrar o processo eu tenho que ir em gerenciador de tarefas.
Eu criei uma interface grafica com botoes para configura-lo.
Fiz um botão de iniciar o processo (funciona perfeitamente) e um botão de parar o processo.
Porem esse botão de parar o processo, não funciona, pois quando o programa e executado, a interface fica inacessivel, nao consigo clickar em nada, ele tipo que desabilita, não sei se é algo padrão do netbeans, e mesmo que eu aperte no “X” ele não fecha, só quando o programa não é executado.
Alguem sabe se tem como arrumar isso ? ou alguma outra solução ? agradeço.

28 Respostas

L

Vc deve iniciar o processo numa thread separada, pois se usar a thread principal, a janela ficará congelada. Isso acontece pq a thread que está executando a janela, estará ocupada fazendo outra coisa.

G

consegue me explicar como faço outra thread separada ? não faço ideia, ou algum link explicativo agradeço essa infomação, já foi meio caminho andado <3

L

Dê uma lida nesse artigo da Alura: Threads em Java 1: Programação paralela | Alura Cursos Online

A ideia é vc criar uma classe que será o que vai ser executada pela thread. Essa classe deve implementar a interface Runnable.

Depois, vc deve iniciar a thread para que sua lógica seja executada:

Thread t = new Thread(new ClasseCriadaRunnable());
t.start();
G

Essas são minhas classes.
No main menu tem uma interface com um botão iniciar.
Eu criei uma classe chamafda Executar 1080p lá está o codigo do autoclick.
Classes

Eu implementei o metodo runable (não sei se esta correto) porem não uncionou quando eu
aperto o botão iniciar.

aqui está como eu coloquei no botão que está na classe principal MainMenu.
obs: o autoclick funciona apenas quando eu coloco o script dentro do botão.
Parece que tem algo errado no codigo ou está faltando algo.


Consegue me ajudar, ver se eu fiz algo de errado ?

L

Posta o código da sua classe pra gente ver.

Não a imagem. Sempre que puder, poste o código mesmo

G

ele funciona apenas se eu colocaro codigo diratamente no botão iniciar.
(sim sou iniciante e a forma que eu faço e feia aindakk)
na imagem tem a forma que coloquei no botão.
mudei o nome da classe para TesteIniciar

public class TetsteIniciar implements Runnable  {

MainMenu menu = new MainMenu ();

<a class="mention" href="/u/override">@Override</a>

public void run() {
//CONDIÇÕES DE FUNCIONAMENTO
    try {

        Robot robo = new Robot();
        //tempo do click
        String timeClick = menu.clickDelay.getSelectedItem().toString();
        int convertClick = Integer.parseInt(menu.clickDelay.getSelectedItem().toString());
        robo.setAutoDelay(convertClick);
        int mimir = 78000 ;

        //tempo do descanso
        String descansoTime = menu.timeDescanso.getSelectedItem().toString();
        int convertDescanso = Integer.parseInt(menu.timeDescanso.getSelectedItem().toString());
        
        
    //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
    //INICIAR 1080p
        if (menu.res1080p.isSelected()){
            for (;;) {

                //TRABALHAR
                robo.mouseMove(1800,950);
                robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                robo.mouseMove(680, 280);
                robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                robo.mouseMove(980, 180);
                robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                robo.mouseMove(980, 380);
                robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                Thread.sleep(10000);

                //USUARIO SELECECIONA TEMPO
                for(int x = 1; x <= convertDescanso ; ++x){

                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    //CLICK DESCONECT
                    for (int Y =0; Y <=1; ++Y ){
                        //FASE1
                        robo.mouseMove(900, 730);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE2
                        robo.mouseMove(900, 890);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE3
                        robo.mouseMove(1840, 540);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE4
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    }
                    //DESCANCO 1 MINUTOS
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    Thread.sleep(mimir);

                    //ANTIDESCONECT
                    //SAI
                    robo.mouseMove(40, 60);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    //ENTRA
                    robo.mouseMove(980, 380);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    Thread.sleep(10000 );

                    //SAI
                    robo.mouseMove(40, 60);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    //ENTRA
                    robo.mouseMove(980, 380);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    //FASE1
                    robo.mouseMove(900, 730);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    //FASE2
                    robo.mouseMove(900, 890);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    //FASE3
                    robo.mouseMove(1840, 540);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    //FASE4
                    robo.mouseMove(980, 380);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                }
                // voltar menu principal
                robo.mouseMove(40, 60);
                robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            }
        }
        
        //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
    
    
    
    
    
    
}   catch (InterruptedException ex) {
        Logger.getLogger(TetsteIniciar.class.getName()).log(Level.SEVERE, null, ex);
    } catch (AWTException ex) {
        Logger.getLogger(TetsteIniciar.class.getName()).log(Level.SEVERE, null, ex);
    }

}
}

G

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

Thread ThereadIniciar = new Thread (new TetsteIniciar());
    ThereadIniciar.run();
G

uma imagem para ter noção do que eu estou fazendo, preciso que o botão parar funcione em quanto o progama roda no loop infinito.

image

S

Para disparar a Thread tem que chamar o método start() mas você está chamando o método run().

J

Esse erro não tem necessariamente nada a ver com o “NetBeans não deixa encerrar o processo”

G

sim, me expressei errado no titulo. vou arrumar

G

tambem não funcionou.
Acho que não existe a resposta pra isso kkkk :l

S

Tem certeza de que sua Thread não está manipulando a instância errada de MainMenu?

Posta o fonte completo do TetsteIniciar e do MainMenu

G
package bomberclickv2;

import ResoluçõesGo.Executar1080;
import ResoluçõesGo.testeExecut;
import TempoDescanso.TempoDescanso;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MainMenu extends javax.swing.JFrame {
  
  public MainMenu() {
    initComponents();
  }
  
  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">
  private void initComponents() {
    iniciar = new javax.swing.JButton();
    sair = new javax.swing.JButton();
    delayClick = new javax.swing.JComboBox<>();
    tempoDescanso = new javax.swing.JComboBox<>();
    janela1080p = new javax.swing.JRadioButton();
    janela720p = new javax.swing.JRadioButton();
    
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    iniciar.setText("INICIAR");
    iniciar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        iniciarActionPerformed(evt);
      }
    });

    sair.setText("SAIR");
    sair.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        sairActionPerformed(evt);
      }
    });

    delayClick.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        delayClickActionPerformed(evt);
      }
    });

    tempoDescanso.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        tempoDescansoActionPerformed(evt);
      }
    });

    janela1080p.setText("1080p");
    janela1080p.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        janela1080pActionPerformed(evt);
      }
    });
    
    janela720p.setText("720p");
    
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    
    layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
          .addGap(40, 40, 40)
          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
            .addComponent(delayClick, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addComponent(iniciar))
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 170, Short.MAX_VALUE)
          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(sair, javax.swing.GroupLayout.Alignment.TRAILING)
            .addComponent(tempoDescanso, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
          .addGap(60, 60, 60))
      .addGroup(layout.createSequentialGroup()
        .addGap(143, 143, 143)
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
          .addComponent(janela720p)
          .addComponent(janela1080p))
        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );
    
    layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
        .addContainerGap(86, Short.MAX_VALUE)
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
            .addComponent(delayClick, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addComponent(tempoDescanso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        .addGap(18, 18, 18)
        .addComponent(janela1080p)
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
        .addComponent(janela720p)
        .addGap(13, 13, 13)
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
          .addComponent(iniciar)
          .addComponent(sair))
        .addGap(79, 79, 79))
    );
    
    pack();
  }// </editor-fold>                        
  
  private void janela1080pActionPerformed(java.awt.event.ActionEvent evt) {

  }                                           
  
  private void tempoDescansoActionPerformed(java.awt.event.ActionEvent evt) {
    String quinze_min = "3";
    this.tempoDescanso.addItem(quinze_min);

    String quarenta_min = "6";
    this.tempoDescanso.addItem(quarenta_min);

    String uma_hora_meia = "9";
    this.tempoDescanso.addItem(uma_hora_meia);
  }                                             
  
  private void delayClickActionPerformed(java.awt.event.ActionEvent evt) {
    String um = "1000";
    this.delayClick.addItem(um);

    String dois = "2000";
    this.delayClick.addItem(dois);

    String tres = "3000";
    this.delayClick.addItem(tres);
  }
  
  private void iniciarActionPerformed(java.awt.event.ActionEvent evt) {
    Thread ThreadIniciar = new Thread (new Executar1080());
    ThreadIniciar.start();
  }
  
  private void sairActionPerformed(java.awt.event.ActionEvent evt) {
    System.exit(0);
  }
  
  public static void main(String args[]) {
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
          }
        }
      } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      }
      
      java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
          new MainMenu().setVisible(true);
        }
      });
    }

    // Variables declaration - do not modify                     
    public javax.swing.JComboBox<String> delayClick;
    public javax.swing.JButton iniciar;
    public javax.swing.JRadioButton janela1080p;
    private javax.swing.JRadioButton janela720p;
    public javax.swing.JButton sair;
    public javax.swing.JComboBox<String> tempoDescanso;
    // End of variables declaration
S

Sacanagem postar código sem formatar com o botão </>. :disappointed:

Faltou o fonte da classe Executar1080().

G

Me desculpe amigo kkkk, eu nunca postei nada em forum, e a primeira vez, pois eu estou tentando programar na raça sem tutorial estou utilizando tudo que aprendi e pesquisando como fazer.
Tento fazer da forma mais organizada possivel, mas eu sei que fica feio kkkk.
sou iniciante.
vou testar e volto aqui pra falar se funcionou.

G

como eu faria nessa caso pra chamar a fonte da classe Executar1080() ?

G

sinto que estou perto de resolver kkk, preciso de ajuda.

S

Eu quis dizer que faltou você postar o fonte da classe Executar1080.

Você só falou o problema mas não postou os fontes atualizados.

G
package ResoluçõesGo;

import bomberclickv2.MainMenu;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Executar1080 implements Runnable  {

    public static void main(String[] args) {
       
    }

    
    public void start() {
        MainMenu menu = new MainMenu ();
        
        
         //CONDIÇÕES DE FUNCIONAMENTO
        try {

            Robot robo = new Robot();
            //tempo do click
            String delayClick = menu.delayClick.getSelectedItem().toString();
            int convertClick = Integer.parseInt(menu.delayClick.getSelectedItem().toString());
            robo.setAutoDelay(convertClick);
            int mimir = 78000 ;

            //tempo do descanso
            String tempoDescanso = menu.tempoDescanso.getSelectedItem().toString();
            int convertDescanso = Integer.parseInt(menu.tempoDescanso.getSelectedItem().toString());
            
            
        //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        
        //INICIAR 1080p
            if (menu.janela1080p.isSelected()){
                for (;;) {

                    //TRABALHAR
                    robo.mouseMove(1800,950);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(680, 280);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(980, 180);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(980, 380);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    Thread.sleep(10000);

                    //USUARIO SELECECIONA TEMPO
                    for(int x = 1; x <= convertDescanso ; ++x){

                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        //CLICK DESCONECT
                        for (int Y =0; Y <=1; ++Y ){
                            //FASE1
                            robo.mouseMove(900, 730);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE2
                            robo.mouseMove(900, 890);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE3
                            robo.mouseMove(1840, 540);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE4
                            robo.mouseMove(980, 380);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        }
                        //DESCANCO 1 MINUTOS
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        Thread.sleep(mimir);

                        //ANTIDESCONECT
                        //SAI
                        robo.mouseMove(40, 60);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //ENTRA
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        Thread.sleep(10000 );

                        //SAI
                        robo.mouseMove(40, 60);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //ENTRA
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        //FASE1
                        robo.mouseMove(900, 730);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE2
                        robo.mouseMove(900, 890);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE3
                        robo.mouseMove(1840, 540);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE4
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    }
                    // voltar menu principal
                    robo.mouseMove(40, 60);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                }
            }
            
            //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        
        
        
      
    }   catch (InterruptedException ex) {
            Logger.getLogger(Executar1080.class.getName()).log(Level.SEVERE, null, ex);
        } catch (AWTException ex) {
            Logger.getLogger(Executar1080.class.getName()).log(Level.SEVERE, null, ex);
        }
    
}

    @Override
    public void run() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
G

me ajuda pls kkk :l

S

O problema é que no seu método main você está criando um MainMenu e na classe Executar1080 está criando um novo MainMenu ao invés de utilizar o mesmo que você criou no método main.

G

Entendi, como eu faço para ao inves de criar um novo, utilizar o mesmo que eu já criei ?
e que eu preciso puxar os metodos dos botões para a classe Executar1080 para funcionar.
consegue me ajudar ?

G

realmente deve ser isso, pois se eu utilizar println com loop de contagem, ele funciona.
Mas eu tenho que chamar os metodos dos botões que está na classe principal (MainMenu) , para fazer funcionar e deixar em classses separadas

G

Pois na interface grafica tem as opções de escolher o tempo do delay do click e o tempo para reinciar o loop ( que é feito com a quantidade de repetições ) ex descanso dos bombers > 6 = 45 min. ele vai repetir o loop 6 vezes e vai reinciar o loop novamente.
por isso eu tenho que chamar a class MainMenu para a Executar1080p.
se não ele não vai pegar o valor dos botões.

S

Passa o objeto do MainMenu como parâmetro na criação do objeto da classe Executar1080, dessa forma:

import bomberclickv2.MainMenu;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Executar1080 implements Runnable  {

    private final MainMenu menu;

    public Executar1080(MainMenu menu) {
        this.menu = menu;
    }
    
    public void start() {
         //CONDIÇÕES DE FUNCIONAMENTO
        try {

            Robot robo = new Robot();
            //tempo do click
            String delayClick = menu.delayClick.getSelectedItem().toString();
            int convertClick = Integer.parseInt(menu.delayClick.getSelectedItem().toString());
            robo.setAutoDelay(convertClick);
            int mimir = 78000 ;

            //tempo do descanso
            String tempoDescanso = menu.tempoDescanso.getSelectedItem().toString();
            int convertDescanso = Integer.parseInt(menu.tempoDescanso.getSelectedItem().toString());
            
            
        //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        
        //INICIAR 1080p
            if (menu.janela1080p.isSelected()){
                for (;;) {

                    //TRABALHAR
                    robo.mouseMove(1800,950);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(680, 280);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(980, 180);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    robo.mouseMove(980, 380);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    Thread.sleep(10000);

                    //USUARIO SELECECIONA TEMPO
                    for(int x = 1; x <= convertDescanso ; ++x){

                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        //CLICK DESCONECT
                        for (int Y =0; Y <=1; ++Y ){
                            //FASE1
                            robo.mouseMove(900, 730);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE2
                            robo.mouseMove(900, 890);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE3
                            robo.mouseMove(1840, 540);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                            //FASE4
                            robo.mouseMove(980, 380);
                            robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                            robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        }
                        //DESCANCO 1 MINUTOS
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        Thread.sleep(mimir);

                        //ANTIDESCONECT
                        //SAI
                        robo.mouseMove(40, 60);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //ENTRA
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        Thread.sleep(10000 );

                        //SAI
                        robo.mouseMove(40, 60);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //ENTRA
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                        //FASE1
                        robo.mouseMove(900, 730);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE2
                        robo.mouseMove(900, 890);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE3
                        robo.mouseMove(1840, 540);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                        //FASE4
                        robo.mouseMove(980, 380);
                        robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                        robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                    }
                    // voltar menu principal
                    robo.mouseMove(40, 60);
                    robo.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robo.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

                }
            }
            
            //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        
        
        
      
    }   catch (InterruptedException ex) {
            Logger.getLogger(Executar1080.class.getName()).log(Level.SEVERE, null, ex);
        } catch (AWTException ex) {
            Logger.getLogger(Executar1080.class.getName()).log(Level.SEVERE, null, ex);
        }
    
}

    @Override
    public void run() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

Aí é só criar a Thread assim:

private void iniciarActionPerformed(java.awt.event.ActionEvent evt) {
    Runnable runnable = new new Executar1080(this);
    Thread thread = new Thread(runnable);
    thread.start();
}
G

agora deu uma exeption :frowning:

Exception in thread "Thread-0" java.lang.UnsupportedOperationException: Not supported yet.
	at ResoluçõesGo.Executar1080.run(Executar1080.java:156)
	at java.base/java.lang.Thread.run(Thread.java:833)
S

Pôxa amiguinho, você implementou a classe Executar1080 pra lançar essa exceção e agora não sabe o que está acontecendo?

@Override
public void run() {
    throw new UnsupportedOperationException("Not supported yet.");
}

🤷🏻

Criado 29 de janeiro de 2022
Ultima resposta 14 de mar. de 2022
Respostas 28
Participantes 4