1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

como fazer com que o valor de uma Thread aparecesse em duas janelas diferentes

Seguinte, gostaria que uma thread atualizasse os valores de forma igual em janelas diferentes. Tenho duas janelas (AlunoCliente e ProfessorCliente), e tenho uma numeração que aparece nelas do 1 ao 7. Porém, quando eu instancio as janelas de forma separada, elas aparecem os valores de forma diferente, ou seja, cada uma tem um valor. Mas quando eu instancio essas janelas dentro de um mesmo main, os valores aparecem sincronizados. Porem eu não posso instanciar todas juntas, pq esse trecho de código, faz parte de um projeto maior, que eu tenho que ter várias janelas de aluno e uma única de professor, por isso eu não posso instanciar todas juntas. A pergunta é: tem como, instanciando de forma separada, sincronizar esses valores?

enter code here

package visao;

    import javax.swing.*;
    public class AlunoCliente extends JFrame {
        private JPanel jPanel1;
        private JLabel labelInfoPiscar;
        public AlunoCliente() {
            setSize(300, 300);
            jPanel1 = new JPanel();
            setContentPane(jPanel1);
            jPanel1.setLayout(null);
            labelInfoPiscar = new JLabel();
            labelInfoPiscar.setFont(new Font("Tahoma", Font.PLAIN, 65));
            labelInfoPiscar.setBounds(48, 59, 192, 178);
            jPanel1.add(labelInfoPiscar);
        }//getters and set
    }

   package visao;

    import javax.swing.*;
    public class ProfessorCliente extends JFrame {
        private JPanel jPanel3, contentPane;
        private  JLabel labelInfoPiscar;
        public ProfessorCliente() {
            setSize(300,300);
            jPanel3 = new JPanel();
            jPanel3.setBounds(10, 11, 264, 239);
            jPanel3.setLayout(null);
            setContentPane(jPanel3);
            labelInfoPiscar.setFont(new Font("Tahoma", Font.PLAIN, 65));
            labelInfoPiscar.setBounds(10, 11, 232, 217);
            jPanel3.add(labelInfoPiscar);
        }// get and set
    }

   package serviço;

    public class AlunoServiço {
        public static void main(String args[]) {
            AlunoCliente ac = new AlunoCliente();
            ac.setVisible(true);
            ProfessorCliente pc = new ProfessorCliente();
            ControleAlunoCliente cac = new ControleAlunoCliente(ac, pc);
        }
    }

 package serviço;

        public class ProfessorServiço {
        public static void main(String args[]) {
            ProfessorCliente pc = new ProfessorCliente();
            pc.setVisible(true);
            AlunoCliente ac = new AlunoCliente();
            ControleProfessorCliente cpc = new ControleProfessorCliente(pc, ac);
        }
    }

   package controle;

    public class ControleAlunoCliente{
        private AlunoCliente ac;
        private ProfessorCliente pc;
        private ControllerPainel painelController;
        public ControleAlunoCliente(AlunoCliente ac, ProfessorCliente pc) {
            this.ac = ac;
            this.pc = pc;
            painelController = new ControllerPainel(ac.getLabelInfoPiscar(),pc.getLabelInfoPiscar());
            painelController.start();
        }
    }

   package controle;

    public class ControleProfessorCliente {
        private ProfessorCliente pc;
        private AlunoCliente ac;
        private ControllerPainel painelController;
        public ControleProfessorCliente(ProfessorCliente pc, AlunoCliente ac) {
            this.pc = pc;this.ac = ac;
            painelController = new ControllerPainel(ac.getLabelInfoPiscar(),pc.getLabelInfoPiscar());
            painelController.start();
        }
    }
package controle;

    import javax.swing.*;
    public class ControllerPainel extends Thread {
        JLabel LabelInfoPiscar, LabelInfoPiscar2;
        public ControllerPainel(JLabel LabelInfoPiscar,JLabel LabelInfoPiscar2) {
            this.LabelInfoPiscar = LabelInfoPiscar;
            this.LabelInfoPiscar2 = LabelInfoPiscar2;
        }
        @Override
        public void run() {
            super.run();
            for (int indice = 0; indice < 7; indice++) {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException ex) {
                }
                LabelInfoPiscar.setText(String.valueOf(indice));
                LabelInfoPiscar2.setText(String.valueOf(indice));
            }
        }
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.