指定したHSceneを最前面に表示するHScene.show()メソッドのサンプルコード。
本サンプルでは、一部が重なり合った2つのHSceneが交互に最前面に表示される。
本サンプルでは、一部が重なり合った2つのHSceneが交互に最前面に表示される。
なお、本サンプルを動作させるためには、BD-J Object fileに本サンプルを2つ登録し、それぞれ奇数、偶数のapplication_idを割り振る必要がある。
Main.java
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HSceneTemplate;
public class Main extends Component implements Xlet{
int x, y, w = 960, h = 540;
int count = 0;
int appID;
public void initXlet(XletContext xc){
try {
appID = Integer.parseInt[1]String) xc.getXletProperty("dvb.app.id"), 16);
if( ( appID%2 ) == 0 ){ // application_idに応じて表示位置をずらしている
x = 480-240; y = 270-135;
… Continue reading;
hs.add(this);
if( ( appID%2 ) == 0 ){ // application_idに応じて開始タイミングをずらしている
Thread.sleep(1000);
}
hs.setVisible(true);
for( ;; ){
hs.show(); // 自アプリのHSceneを最前面にしてrepaint
// hs.repaint();
count++;
Thread.sleep(2000);
}
} catch (Throwable thr){
}
}
public void paint(Graphics g ){
if( ( appID%2 ) == 0 ){
g.setColor(Color.blue);
} else {
g.setColor(Color.red);
}
g.fillRect(0, 0, w, h);
g.setColor(Color.white);
g.setFont(new Font(null, Font.BOLD, 48));
g.drawString(Integer.toString(count), 100, 100);
g.drawString(Integer.toString(count), w-100, h-100);
}
public void startXlet(){}
public void pauseXlet(){}
public void destroyXlet(boolean unconditional){}
}
関連する項目
- HScene: HSceneの概要
- HSceneの領域設定8
↑1 | String) xc.getXletProperty("dvb.app.id"), 16); if( ( appID%2 ) == 0 ){ // application_idに応じて表示位置をずらしている x = 480-240; y = 270-135; } else { x = 960-240; y = 540-135; } // HSceneを取得 HSceneFactory hsf= HSceneFactory.getInstance(); HSceneTemplate hst = new HSceneTemplate(); hst.setPreference(HSceneTemplate.SCENE_PIXEL_DIMENSION, new Dimension(w, h), HSceneTemplate.REQUIRED); hst.setPreference(HSceneTemplate.SCENE_PIXEL_LOCATION, new Point(x, y), HSceneTemplate.REQUIRED); HScene hs = hsf.getBestScene(hst); this.setBounds(new Rectangle(0,0,w,h |
---|