在黑莓应用程序中创建用户界面





5.00/5 (3投票s)
本文介绍了在黑莓应用程序中创建用户界面的入门知识

 
 
引言
黑莓 Java 开发环境 (JDE) 用于开发在黑莓手持设备上运行的应用程序。
有两种 API 集用于创建用户界面
- MIDP UI API
- 黑莓 UI API
当您想要开发在符合 MIDP 的设备上运行的应用程序时,可以使用 MIDP UI API,而当您想要专门开发在黑莓手持设备上运行的应用程序时,可以使用黑莓 UI API。当编译黑莓 Java 源代码时,它会生成一个 .cod 文件。此 .cod 文件被复制到设备上,并由设备的虚拟机 (vm) 执行。
在本文中,我专注于使用黑莓 UI API 开发应用程序。最后,我创建了一个简单的应用程序,用于演示基本概念。
背景
Components
黑莓应用程序中用户界面的主要元素是 Screen 类。一次只能显示一个屏幕。Screen 对象存储在堆栈中。为了显示一个屏幕,它被推到堆栈的顶部;为了关闭它,它被从堆栈中弹出。
用户界面组件由字段表示。所有 UI 组件都位于 net.rim.device.api.ui.component 包中。
常用的字段是
- Label字段 - 这是- LabelField类的实例,用于显示- static文本。
- Text字段 -- TextField类用于创建一个可编辑的字段,用户可以在其中输入值。  
- Button字段 -- ButtonField类用于创建一个可点击的字段以执行操作。  
- 数字选择字段 -  NumericChoice类用于允许用户从一系列数字中选择一个数字值。  
- 对象选择字段 -  ObjectChoice类用于允许用户从对象列表中选择任何对象。  
- Checkbox字段 -- CheckboxField类用于允许用户选择两个选项中的一个。  
- RadioButton字段 -- RadioButtonField类用于允许用户从多个选项中选择一个值。  
- Gauge字段 -- GaugeField类用于显示进度条。  
Layouts
可以使用布局管理器来管理屏幕上组件的布局。有四个布局管理器类,如下所示
- VerticalFieldManager
- HoriziontalFieldManager
- FlowFieldManager
- DialogFieldManager
可以使用以下代码创建垂直布局并向其添加项目。
VerticalFieldManager manager=new VerticalFieldManager(Manager.VERTICAL_SCROLL);
manager.add(button1);
manager.add(button2);
screen.add(manager);
菜单
可以创建菜单来执行操作。  MenuItem 类可用于创建菜单,如下所示
private MenuItem viewItem = new MenuItem("Show Message", 100, 10)
{
    public void run()
    {
        Dialog.inform("Welcome to BlackBerry JDE");
    }
};
Screen 类的  makeMenu() 函数被重写,以将  menuitem 添加到屏幕。
protected void makeMenu(Menu menu,int n)
{
    menu.add(closeItem);
}
事件
可以通过实现 FieldChangeListener 接口和 fieldChanged 方法来处理事件。例如
class MyClass extends MainScreen implements FieldChangeListener
...
...
...
public void fieldChanged(Field field,int context)
可以通过调用字段的  setChangeListener 方法来监视对字段的更改,如下所示
buttonfield.setChangeListener(this);
Using the Code
以下程序演示了不同字段的用法。
// Importing the required packages.
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.component.*;
class UIExample extends UiApplication	// Extending from UIApplication class.
{
    public static void main(String args[])	// main function.
    {
        new UIExample().enterEventDispatcher();	// Start event handling process
    }
    UIExample()	// Constructor.
    {
        pushScreen(new MyClass());	// Push screen on top of the stack
    }
}
class MyClass extends MainScreen implements FieldChangeListener	// User defined 
							// screen class.
{
    // Declaring fields.
    LabelField lfield;
    TextField tfield;
    ButtonField bField;
    NumericChoiceField nfield;
    ObjectChoiceField ofield;
    CheckboxField chkfield;
    RadioButtonField rfield1,rfield2,rfield3;
    GaugeField gfield;
    // Declaring Close Menu.
    private MenuItem closeItem = new MenuItem("Close", 100, 10)
    {
        public void run()
        {
            onClose();
        }
    };
    // Adding menu to screen.
    protected void makeMenu(Menu menu,int n)
    {
        menu.add(closeItem);
    }
    public MyClass()	// Constructor.
    {
        // Initializing fields and creating user interface
        VerticalFieldManager manager=new VerticalFieldManager
        	(Manager.VERTICAL_SCROLL);	// Layout Manager
        lfield=new LabelField("Enter a value: ");	// LabelField
        tfield=new TextField();			// TextField
        bField=new ButtonField("OK");		// ButtonField
        bField.setChangeListener(this);
        nfield=new NumericChoiceField("Select a number",1,20,1);//NumericChoiceField
        nfield.setChangeListener(this);
        String[] objects={"A","B","C","D","E","F","G","H","I","J"};// List of objects for 
							//the ObjectChoiceField
        ofield=new ObjectChoiceField("Select a value",objects);	// ObjectChoiceField
        ofield.setChangeListener(this);
        chkfield=new CheckboxField("Select",false);		// CheckboxField
        chkfield.setChangeListener(this);
        RadioButtonGroup group=new RadioButtonGroup();		// RadioButtonGroup to 
							// select a single option
        rfield1=new RadioButtonField("Option 1",group,true);	// RadioButtonField
        rfield2=new RadioButtonField("Option 2",group,false);	// RadioButtonField
        rfield3=new RadioButtonField("Option 3",group,false);	// RadioButtonField
        rfield1.setChangeListener(this);
        rfield2.setChangeListener(this);
        rfield3.setChangeListener(this);
        gfield=new GaugeField("Select a value: ",1,100,1,
			GaugeField.FOCUSABLE|GaugeField.EDITABLE);
							// GaugeField
        gfield.setChangeListener(this);
        manager.add(lfield);
        manager.add(tfield);
        manager.add(bField);
        manager.add(nfield);
        manager.add(ofield);
        manager.add(chkfield);
        manager.add(rfield1);
        manager.add(rfield2);
        manager.add(rfield3);
        manager.add(gfield);
        add(manager);
    }
    public void fieldChanged(Field field,int context)	// Handling events.
    		// The Dialog.inform method is used to display an alert message.
    {
        if(field==bField)
        {
            Dialog.inform("You have clicked the button");
        }
        if(field==nfield)
        {
            int n=nfield.getSelectedValue();
            Dialog.inform("You have selected "+Integer.toString(n));
        }
        if(field==ofield)
        {
            String s=ofield.getChoice(ofield.getSelectedIndex()).toString();
            Dialog.inform("You have selected "+s);
        }
        if(field==chkfield)
        {
            boolean b=chkfield.getChecked();		// Check Status of checkbox.
            Dialog.inform("Option "+(b?"selected":"unselected"));
        }
        if(field==rfield1)
        {
            if(rfield1.isSelected())			// Check RadioButton status.
            {
                Dialog.inform("Option 1 selected");
            }
        }
        if(field==rfield2)
        {
            if(rfield2.isSelected())			// Check RadioButton status.
            {
                Dialog.inform("Option 2 selected");
            }
        }
        if(field==rfield3)
        {
            if(rfield3.isSelected())			// Check RadioButton status.
            {
                Dialog.inform("Option 3 selected");
            }
        }
        if(field==gfield)
        {
            int value=gfield.getValue();		// Get value of Gauge
            Dialog.inform("You have selected "+value+" value");
        }
    }
}
关注点
当项目在黑莓 JDE 中执行时,它会在黑莓模拟器中打开,并可以从下载部分中选择。
我希望这篇文章能为用户提供开发黑莓手持设备的基本信息。
历史
- 2011年9月10日:初始版本


