和本地库。为了构建 OCAP 应用程序,您真正需要关心的全部内容就是定义平台的类文件。
OCAP Java 平台被打包为两个 JAR 文件:
${OCAPROOT}/bin/${OCAPTC}/env/cvm/lib/basis.jar 是 CDC/FP/PBP 堆栈。
${OCAPROOT}/bin/${OCAPTC}/env/sys/ocap-classes.jar 包含 OCAP 实现的所有 Java 类。
代码中的几行
OCAP入门,第2部分: 为OCAP RI编写应用程序(2)
时间:2012-01-28 IBM Jonathan Knudsen
使用这些 JAR 文件来创建 OCAP 应用程序之前,您需要一些源代码以进行构建。将清单 1 中的代码保存为 src/HelloOcap.java(或者 下载 它):
清单 1. 一些要构建的源代码
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import javax.tv.xlet.XletStateChangeException;
import org.havi.ui.HScene;
import org.havi.ui.HSceneFactory;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.Random;
public class HelloOCAP implements Xlet {
private HScene mScene;
private HelloOCAPUI mContent;
public void initXlet(XletContext ctx) throws XletStateChangeException {
System.out.println("HelloOCAP initXlet");
HSceneFactory factory = HSceneFactory.getInstance();
mScene = factory.getDefaultHScene();
mContent = new HelloOCAPUI();
mContent.setVisible(true);
mScene.setLayout(new BorderLayout());
mScene.add(mContent, BorderLayout.CENTER);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension d = toolkit.getScreenSize();
mScene.setLocation(0, 0);
mScene.setSize(d.width, d.height);
mScene.validate();
}
public void startXlet() throws XletStateChangeException {
mScene.setVisible(true);
}
public void pauseXlet() {
}
public void destroyXlet(boolean forced) throws XletStateChangeException {
}
}
class HelloOCAPUI extends Container {
private boolean mInitialized;
private Font mFont;
private int mX, mY;
public HelloOCAPUI() {
mInitialized = false;
mFont = null;
mX = mY = -1;
}
public void paint(Graphics g) {
String s = "Hello, OCAP!";
if (mInitialized == false) {
mFont = new Font("Serif", Font.PLAIN, 96);
int w = getWidth();
int h = getHeight();
FontMetrics fm = g.getFontMetrics(mFont);
int sw = fm.stringWidth(s);
int sh = fm.getHeight();
int sd = fm.getDescent();
mX = (w - sw) / 2;
mY = (h + sh) / 2 - sd;
mInitialized = true;
}
g.setFont(mFont);
g.setColor(Color.blue);
g.drawString("Hello, OCAP!", mX, mY);
}
}
在清单 1 中,initXlet() 中的代码使用一个名为 HelloOCAPUI 的助手类来为这个应用程序建立了一个显示。HelloOCAPUI 主要处理将文本定位于屏幕中间的问题。
OCAP入门,第2部分: 为OCAP RI编写应用程序(3)
时间:2012-01-28 IBM Jonathan Knudsen
构建源代码
您可以使用一个相当长的命令行来构建 HelloOcap.java,但是,如果您计划经常执行这个操作,最好编写一个脚本(在 Windows 中也称为批文件)。
清单 2 是用于构建 Hello |