Netbeans não deixa encerrar processo

28 respostas
netbeansjavadesktopprogramação
Gates

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

Lucas_Camara

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.

Gates

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

Lucas_Camara

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();
Gates

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 ?

Lucas_Camara

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

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

Gates

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);
    }

}
}

Gates

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

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

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

staroski

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

j-menezes

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

Gates

sim, me expressei errado no titulo. vou arrumar

Gates

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

staroski

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

Gates
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
staroski

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

Faltou o fonte da classe Executar1080().

Gates

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.

Gates

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

Gates

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

staroski

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

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

Gates
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.");
    }

}
Gates

me ajuda pls kkk :l

staroski

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.

Gates

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 ?

Gates

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

Gates

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.

staroski

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();
}
Gates

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

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