的名字必须赋予一个视图组件,这样框架就能在组件和被命名的模型类变量之间复制数据。命名的惯例和其他的用于网络应用程序框架的和Apache BeanUtils库(它通常用于框架的执行)类似。下面是支持的命名格式: ●简单的: 直接连接到模型域的组件;例如,field1 ●嵌套的:连接到模型内部的JavaBeans域的组件;例如,field1.field2 ●索引的:连接到模型内的数组域的组件;例如myArray[1] ●映射的:连接到模型内的映射域组件;例如,myHashMap(“foo”) ●组合的:通过结合符号连接到模型的内部域的组件;例如,field.myArray[1].myHashMap["foo"] 除了模型类的GET和SET方法外,视图类必须为每一个视图组件建立一个GET方法。 下面的例子是为FindCustomerModel建立的视图类。它使用了扩展了基础Swing类的TikeSwing组件(从JLabel到YLabel,JTextField到YTextField,等)。例子的代码和标准的Swing视图很像,只有setMVCNames()方法包含了TikeSwing特有的代码。依照上面讲述的原则,它设定了模型组件的连接。resultTable列通过YColumn对象与customers集合中的POJO域相连。findButton不显示任何从模型得到的数据,但是MVC的名字是为TikeSwing的事件句柄设定的(以后再讲)。 public class FindCustomerView extends YPanel { private YLabel idLabel = new YLabel("Id"); private YLabel nameLabel = new YLabel ("Name"); private YTextField idField = new YTextField(); private YTextField nameField = new YTextField(); private YPanel criteriaPanel = new YPanel(); private YTable resultTable = new YTable(); private YButton findButton = new YButton("Find"); public FindCustomerView () { addComponents(); setMVCNames(); } private void setMVCNames() { idField.getYProperty().put(YIComponent.MVC_NAME,"id"); nameField.getYProperty().put(YIComponent.MVC_NAME,"name"); resultTable.getYProperty().put(YIComponent.MVC_NAME,"customers"); findButton.getYProperty().put(YIComponent.MVC_NAME,"findButton"); YColumn[] columns = { new YColumn("id"), new YColumn("name")}; resultTable.setColumns(columns); } private void addComponents() { this.setLayout(new BorderLayout()); this.add(criteriaPanel, BorderLayout.NORTH); idField.setPreferredSize(new Dimension(100, 19)); nameField.setPreferredSize(new Dimension(100, 19)); criteriaPanel.add(idLabel); criteriaPanel.add(idField); criteriaPanel.add(nameLabel); criteriaPanel.add(nameField); criteriaPanel.add(findButton); this.add(resultTable, BorderLayout.CENTER); } public YTextField getIdField() { return idField; } public YLabel getIdLabel() { return idLabel; } public YTextField getNameField() { return nameField; } public YLabel getNameLabel() { return nameLabel; } public YTable getResultTab上一页 [1] [2]
|
|