Meu programa não chama o método paint em javadtv

13 views
Skip to first unread message

paola pereira

unread,
Jun 17, 2010, 8:48:33 AM6/17/10
to ging...@googlegroups.com
Oi!
Já fiz testes e o meu código tem percorrido todo o caminho que deveria, inclusive onde se encontra o método repaint que deveria chamar o paint já reescrito. Mas ele não está fazendo isso e eu não sei porque! Se alguém souber por favor me ajude! Obrigada!

package com.sun.demo.hellodtvworld;

import com.sun.dtv.lwuit.Form;
import com.sun.dtv.lwuit.Label;

import com.sun.dtv.lwuit.plaf.UIManager;
import com.sun.dtv.lwuit.util.Resources;

import com.sun.dtv.ui.DTVContainerPattern;
import com.sun.dtv.ui.DTVContainer;


import java.awt.Color;
import java.awt.Graphics;
import javax.tv.graphics.TVContainer;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;

public class Main implements Xlet {

   DTVContainer dtvContainer;
  
   protected void paint(Graphics g)
        {
            g.setColor(Color.white);
            g.drawLine(60, 30, 10, 30);
            System.out.println("teste");
        }
    public void initXlet(XletContext context) {
        System.out.println("initXlet called");
       
        java.awt.Container tvc = TVContainer.getRootContainer(context);
        Form.init(tvc);

        buildDTVContainer();
       
    }
    public void startXlet() {
        System.out.println("startXlet called");
       
        dtvContainer.setVisibility(true);
        dtvContainer.repaint();
   
    }

    public void pauseXlet() {
        System.out.println("pauseXlet called");
        dtvContainer.setVisibility(false);
    }

    public void destroyXlet(boolean unconditional) {
        System.out.println("destroyXlet called");
        dtvContainer.dispose();
    }

    public void buildDTVContainer() {

        try {
            Resources r1 = Resources.open("/dtvTheme.res");
            UIManager.getInstance().setThemeProps(r1.getTheme(r1.getThemeResourceNames()[0]));
        } catch (Exception e) {
            e.printStackTrace();
        }

       
        dtvContainer = DTVContainer.getBestDTVContainer(new DTVContainerPattern());

        final Form form = new Form("Oi mundo!");

        form.addComponent(new Label("Isto e um rotulo paola"));

       
        dtvContainer.addToFront(form);
       
        dtvContainer.setBackgroundMode(DTVContainer.BACKGROUND_FILL);

    }

}

Raoni Lourenço

unread,
Jun 18, 2010, 1:58:58 PM6/18/10
to ging...@googlegroups.com
Ola Paola,

o metodo nao eh chamado simplesmente porque voce nao sobrescreveu o paint(g) de xlet, mesmo porque xlet eh uma interface e nao classe e nao possui nenhum metodo paint(g). O que voce fez foi criar um metodo paint(g) na sua classe Main e este metodo nunca eh chamado.
Se eu entendi o que voce quer fazer, para que a acao que voce espera seja invocada no repaint() do DTVContainer, voce deve sobrescrever o metodo em um componente lwuit e adicionar esse componente ao Form que voce adicionou ao DTVContainer.  Por exemplo:



form.addComponent(new Label("Isto e um rotulo paola"));
form.addComponent(new Label("") {
                                public void paint(com.sun.dtv.lwuit.Graphics g) {

                                      g.setColor(Color.white);
                                      g.drawLine(60, 30, 10, 30);
                                      System.out.println("teste");
                                }
                               });

  

Ateh mais,


Raoni.

 
2010/6/17 paola pereira <paolamarti...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Desenvolvimento em Ginga Java para TV Digital" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para ging...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para gingajava+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/gingajava?hl=pt-BR.



--
Raoni Lourenço

Reply all
Reply to author
Forward
0 new messages