Hum… poste a implementação da classe novoSemaforo2.
(Dica: não comece nomes de classes por minúsculas; isso confunde a quem vai ler seu código. Inicie nomes de classes por maiúsculas e nomes de métodos por minúsculas).
juliana_cora
thingol:
Hum... poste a implementação da classe novoSemaforo2.
(Dica: não comece nomes de classes por minúsculas; isso confunde a quem vai ler seu código. Inicie nomes de classes por maiúsculas e nomes de métodos por minúsculas).
Obrigada pela dica......
classnovoSemaforo2extendsThread{privateJPanelcanvas;privateintcor;privateinty;privatestaticfinalinttamanhoBola=30;privateintstatus;publicnovoSemaforo2(JPanelcanvas){this.canvas=canvas;}publicvoidrun(){poste();//for infinitofor(;;){while(getStatus()==1){for(inti=1;i<=3;i++){if(i==1){//vermelhosetCor(1);//moveCores posição ymoveCores(55);}elseif(i==2){//verdesetCor(2);moveCores(85);}elseif(i==3){//laramjasetCor(3);moveCores(115);}cores();try{Thread.sleep(999);}catch(InterruptedExceptionie){}limparCor();}}}// run()}publicvoidmoveCores(intposicao){y=posicao;}// movepublicvoidposte(){Graphicsp=canvas.getGraphics();p.fill3DRect(100,50,40,100,false);p.draw3DRect(100,50,40,100,false);}publicvoidcores(){Graphicsg=canvas.getGraphics();if(getCor()==1){g.setColor(Color.red);}elseif(getCor()==2){g.setColor(Color.GREEN);}elseif(getCor()==3){g.setColor(Color.orange);}g.fillOval(105,y,tamanhoBola,tamanhoBola);}publicvoidlimparCor(){Graphicsg=canvas.getGraphics();g.setColor(Color.BLACK);g.fillOval(105,y,tamanhoBola,tamanhoBola);}publicvoidpararSemaforo(intstatus){setStatus(status);}/** * @return the cor */publicintgetCor(){returncor;}/** * @param cor the cor to set */publicvoidsetCor(intcor){this.cor=cor;}/** * @return the status */publicintgetStatus(){returnstatus;}/** * @param status the status to set */publicvoidsetStatus(intstatus){this.status=status;}}
T
thingol
Hum… não é a thread que tem de desenhar alguma coisa. Do jeito que você fez, a máquina deve estar ocupando 100% de CPU (ou 50% em uma máquina com 2 núcleos ) e então não tem tempo de atender aos eventos de botões.
Você tem de criar um componente (derivado de JComponent, talvez), inseri-lo na sua tela, e redefinir seu método paintComponent.
Quando você precisa mexer no desenho, altere apenas as variáveis que são necessárias para efetuar o desenho, e então chame o método repaint desse componente.
juliana_cora
thingol:
Hum… não é a thread que tem de desenhar alguma coisa. Do jeito que você fez, a máquina deve estar ocupando 100% de CPU (ou 50% em uma máquina com 2 núcleos ) e então não tem tempo de atender aos eventos de botões.
Você tem de criar um componente (derivado de JComponent, talvez), inseri-lo na sua tela, e redefinir seu método paintComponent.
Quando você precisa mexer no desenho, altere apenas as variáveis que são necessárias para efetuar o desenho, e então chame o método repaint desse componente.