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





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日:初始版本