テキストボタン

java.awt.Buttonクラスに相当するHTextButtonのサンプルコード。ボタンのpress/releaseでボタンのラベルが変わる。

 

Main.java

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
 
import org.dvb.ui.FontFactory;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import org.havi.ui.HScreen;
import org.havi.ui.HState;
import org.havi.ui.HTextButton;
 
public class Main  implements Xlet, KeyListener{
    HTextButton htb1, htb2;
    public void initXlet(XletContext context){
        try {
            HScene hs= HSceneFactory.getInstance().getFullScreenScene(
                    HScreen.getDefaultHScreen().getDefaultHGraphicsDevice());
            // AWTの各種レイアウトをサポート
            hs.setLayout(new GridLayout(1,2));
            // モナーフォントを使用
            Font f = new FontFactory().createFont("Mona", java.awt.Font.BOLD,72);
            // 日本語も使用可能
            htb1 = new HTextButton("ボタン1");
            htb1.setFont(f);
            // キーリスナーを登録
            htb1.addKeyListener(this);
 
            htb2 = new HTextButton("ボタン2");
            htb2.setFont(f);
            htb2.addKeyListener(this);
            // 上下左右キーの移動先を指定
            htb1.setFocusTraversal(htb2,htb2,htb2,htb2);
            htb2.setFocusTraversal(htb1,htb1,htb1,htb1);
            hs.add(htb1);
            hs.add(htb2);
            hs.setVisible(true);
            htb1.requestFocus();
        } catch (Throwable thr){
        }
    }
    public void startXlet(){    }
    public void pauseXlet(){    }
    public void destroyXlet(boolean unconditional){}
    public void keyPressed(KeyEvent e) {
        if( e.getComponent() instanceof HTextButton ){
            HTextButton htb = (HTextButton)e.getComponent();
            if( htb.equals(htb1) ) {
                htb1.setTextContent("Button1", HState.ALL_STATES);
            } else if( htb.equals(htb2) ){
                htb2.setTextContent("Button2", HState.ALL_STATES);                
            }
        }
    }
    public void keyReleased(KeyEvent e) {
        if( e.getComponent() instanceof HTextButton ){
            HTextButton htb = (HTextButton)e.getComponent();
            if( htb.equals(htb1) ) {
                htb1.setTextContent("ボタン1", HState.ALL_STATES);
            } else if( htb.equals(htb2) ){
                htb2.setTextContent("ボタン2", HState.ALL_STATES);                
            }
        }
    }
    public void keyTyped(KeyEvent e) {}
}

関連する項目

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.