1.Echo2应用的基本原理: 在使用Echo2建立一个Web应用之前,你需要首先建立两个Java类: ApplicationInstance 和 WebContainerServlet。ApplicationInstance 代表每个用户实例的状态,WebContainerServlet继承自HttpServlet, 负责管理http连接,并为每个新的用户生成并分配一个新的ApplicationInstance。
public class HelloWorldApp extends ApplicationInstance {
public Window init() {
Window window = new Window();
ContentPane contentPane = new ContentPane();
window.setContent(contentPane);
Label label = new Label("Hello, world!");
contentPane.add(label);
return window;
}
}
public class HelloWorldServlet extends WebContainerServlet {
public ApplicationInstance newInstance() {
return new HelloWorldApp();
}
}
**典型地用于布局的部件如WindowPane, Column, Grid, 和 ContentPane。
**布局
ColumnLayoutData button1ColumnLayoutData = new ColumnLayoutData();
button1ColumnLayoutData.setAlignment(new Alignment(Alignment.RIGHT,Alignment.DEFAULT));
Button button1 = new Button("first button");
button1.setLayoutData(button1ColumnLayoutData);
2. 事件
final Button button = new Button("Please click me.");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button.setText("Thanks!");
}
});
3. 用户输入部件: Button, RadioButton, CheckBox, TextField, TextArea, PasswordField, SelectField 和 ListBox 部件
Button
部件就是普通的按钮可以接受用户动作并召唤相应的反映.CheckBox
部件是有选择状态的按钮,当某个复选按钮被选中,它的选择状态被激活。RadioButton
部件允许用户从多个选项种选择一个。单选按钮可以添加到按钮组。……
4. 基本布局容器
①列和行(Columns and Rows):列布局数据/行布局数据(ColumnLayoutData / RowLayoutData):布局数据可以控制单元格的排列(居左居中居右)alignment、间距inset margin、背景颜色background color、背景图像background image、宽width(行布局数据)、高height(列布局数据)。
②格子(Grids)格子布局数据(GridLayoutData)
5. 部件属性:包括位置Alignment、背景颜色BackgroundImage、边框Border、颜色Color、长度Extent、字体Font、填充Insets和图片源ImageReferences。
6. 窗体部件: 三个内建的方框部件: ContentPane
、SplitPane
、和 WindowPane
。
★ContentPanes: 是最简单的方框部件.每个 ContentPane
对象一般来说被规定能拥有一个子部件,这个子部件必须是其他的方框部件. 有一个特例:允许多个浮动窗口(比如WindowPane
s对象类的),不过这些浮动窗口类必须实现FloatingPane
接口marker interface。总结为:实现FloatingPane 接口的不受数量限制,没有实现接口的话只允许一个。
★SplitPane分割窗体用来把一块区域regions在水平或垂直方向上划分成两块小区域。分割窗体使用分割窗体布局数据对象 SplitPaneLayoutData
管理子部件的排列情况。SplitPaneLayoutData
能够管理窗体的最大值最小值,滚动条状况,背景颜色和图像,内边距,对齐
★WindowPane
部件是程序可移动窗口的全部。WindowPane
只能被添加到一个内容窗体ContentPane
. 它本身是一个容器窗体 PaneContainer
,所以它自身可以被添加诸如 ContentPane
和 SplitPane
之类的部件。
★
7. 本地化
ResourceBundle resourceBundle
= ResourceBundle.getBundle("myapp.Messages",
ApplicationInstance.getActive().getLocale());
okButton.setText(ResourceBundle.getString("Generic.Cancel"));
cancelButton.setText(ResourceBundle.getString("Generic.Cancel"));
ContainerContext context = (ContainerContext)
getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME);
ClientProperties clientProperties
= context.getClientProperties();
if (clientProperties.getProperty(ClientProperties.LOCALE)
!= null) {
setLocale((Locale)
clientProperties.getProperty(ClientProperties.LOCALE));
}