Component間の重なり順制御

HScene上のComponent間の重なり順を変更するサンプルコード。

 

HSceneおよびHContainerは、Componentをaddする際の重なり順を設定したり、addした後にそれらの重なり順を変更したりするメソッドを提供している。
本サンプルコードでは、メソッドpushToFront()を使用して、3個のComponentを順に最前面に表示させている。

 

Main.java

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
 
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
 
public class Main implements Xlet{
    public void initXlet(XletContext xc){
        try {
            HScene hs= HSceneFactory.getInstance().getFullScreenScene(
                    HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
            Sub sub1 = new Sub(Color.blue);
            Sub sub2 = new Sub(Color.red);
            Sub sub3 = new Sub(Color.green);
            sub1.setLocation(0, 0);
            sub2.setLocation(1920/8, 1080/8);
            sub3.setLocation(1920/4, 1080/4);
            hs.add(sub1);
            hs.add(sub2);
            hs.add(sub3);
            hs.validate();
            hs.setVisible(true);
 
            for( int i=0;; i++ ){
                Thread.sleep(1000);
                if( (i%3) == 0)
                     hs.popToFront(sub1);
                else if( (i%3) == 1)
                    hs.popToFront(sub2);
                else
                    hs.popToFront(sub3);
                hs.repaint();
            }
        } catch (Throwable thr){
        }
    }
    class Sub extends Component {
        Color c;
        public Sub(Color c){this.c = c;this.setSize(1920/2, 1080/2);}
        public void paint(Graphics g){
            g.setColor(c);
            g.fillRect(0, 0, getWidth(), getHeight());
        }
    }
    public void startXlet(){}
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){ }
}

関連する項目

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください