- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我意识到 ListGrid 必须始终是 Final。对我来说,静态对象是最好的,因为我想从另一个类修改它的属性。
在我的项目中,为了拥有清晰的代码,我创建了几个类。
类DataGrid 扩展了ListGrid
,它设置新对象的属性并填充数据。 @Override 方法将按钮添加到我的网格对象。
类PopupWindow扩展Window
,用于在单击ListGrid中的编辑按钮时创建一个Window对象。在窗口中有一些文本框,您可以在其中添加新数据和“提交”按钮。提交按钮的 OnClick 事件会将数据写入 MySQL 服务器,并且应该使用实际数据更新网格(来自 MySQL 的查询)。这是我无法实现的部分。
在入口点类 onModuleLoad 中,我只有以下网格代码:
最终 DataGrid grid_far = new DataGrid();grid_far.setGridData();
我是java新手,也许我不应该使用这么多类,只需将所有内容放在入口点类onModuleLoad()中即可?
如果在 PopupWindow 扩展 Window 类中我声明 Button OnClick 以从 Entry Point 类运行 onModuleLoad() 方法,这会重复我的网页吗?我的意思是这样做:
EntryPointClass ep = new EntryPointClass();
ep.onModuleLoad();
最佳答案
这是没有必要的。可以将 ListGrid 变量创建为非最终变量。
您一定见过将 ListGrid 变量声明为 Final 的示例,但这是出于其他原因。
例如,不可能在匿名内部类中使用非最终局部变量(在方法内声明的变量)。
因此,为了从内部类访问局部变量,需要将它们声明为final。
在 SmartGWT/Swing/等中。内部类用于实现各种回调功能,例如事件处理。
public class Screen {
ListGrid grid1 = new ListGrid();
TextItem text1 = new TextItem("text1", "Text 1");
public void initialize() {
// normally its not required to create subclasses of ListGrid/Button/Window/etc.
// unless a significant change in their behavior is needed
ListGrid grid2 = new ListGrid();
// setup grid properties
// set grid fields
TextItem text2 = new TextItem("text2", "Text 2");
final ListGrid grid3 = new ListGrid();
final TextItem text3 = new TextItem("text3", "Text 3");
IButton button = new IButton("Edit");
button.addClickHandler(new ClickHandler() { // this is declaring an anonymous inner class
public void onClick(ClickEvent clickEvent) { // this method is a member of that anonymous inner class
// out of three ListGrid and thee TextItem instances, only following can be accessed in this method/class
// grid1, text1 (these are not local variables, inner class can access outer class members without any issue)
// grid3, text3 (as they are final, even though local variables)
}
});
// that does not mean, grid2 and text2 can not be used, they can be, just not inside an anonymous inner class
// e.g.-
DynamicForm form = new DynamicForm();
form.setFields(text2);
VLayout layout = new VLayout();
layout.addMember(grid2);
}
}
检查以下链接以获取有关在内部类中使用局部变量的更多详细信息
Inner class and local variables
Question about local final variable in Java
有比使用静态变量更好的方法在对象之间进行通信。
最好将 onModuleLoad() 中的代码保持在最低限度。
所需的类数量取决于您尝试实现的内容。
您无法删除 EntryPoint 实现,因为 GWT 将在其中移交执行以创建应用程序。
GWT/JavaScript 引擎为此调用 onModuleLoad()。
您的代码不得调用它。
浏览SmartGWT showcase包括代码示例。
请参阅SmartGWT API了解更多详情。
有多种方法可以创建 UI 来实现相同的结果。
在 SmartGWT 中与服务器通信以发送/接收数据本身就是一个主题。
可能的实现指南。
public class EntryPointClass implements EntryPoint {
public void onModuleLoad() {
ApplicationScreen screen = new ApplicationScreen();
HStack drawArea = new HStack();
drawArea.setWidth100();
drawArea.setHeight100();
drawArea.addMember(screen.getComponents());
drawArea.draw();
}
}
public class ApplicationScreen { // this class does not need to extend from a widget
public Canvas getComponents() {
// a method that prepares the interface
// using a from+grid type layout, without a popup window
ListGrid grid = getListGrid();
DynamicForm form = getDynamicForm(grid); // have to pass grid in order to add/update records on button events
VLayout layout = new VLayout();
layout.addMember(form);
layout.addMember(grid);
return layout;
}
private DynamicForm getDynamicForm(final ListGrid grid) { // have to declare grid as final to access from event handler inner classes
final TextItem text1 = new TextItem("text1", "Text 1"); // have to declare as final for same reason
ButtonItem saveButton = new ButtonItem("Save");
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
// use text1, grid and other components to save form values and refresh grid
}
});
// creating and configuring form
DynamicForm form = new DynamicForm();
form.setWidth100();
form.setFields(text1, saveButton);
return form;
}
private ListGrid getListGrid() {
// preparing grid fields
ListGridField field1 = new ListGridField("field1", "Field 1");
// creating and configuring grid
ListGrid grid = new ListGrid(); // not final, does not need to be
grid.setWidth100();
grid.setFields(field1);
return grid;
}
}
关于java - SmartGWT ListGrid 最终版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313936/
我有 2 个 TimeItems,我希望能够验证第二个项目的值不大于第一个。 我知道我必须从 CustomValidator 继承并将我的验证逻辑放在#condition 中,我可以使用 #getFo
i want to delete the row from the grid...and changes should reflect into my database..Please pro
我正在编写一个 SmartGWT 应用程序,需要每 30 秒在客户端执行一个方法。在 javascript 中,我会使用 setInterval 或 setTimeout。 如何在 SmartGWT
我想在SmartGWT表单中的DynamicForm中添加一个FormItem,但是我只能找到setItems方法,该方法添加了表单的所有FormItem,因此只能用于初始化表单。我错过了什么吗? 我
我已经使用 smartgwt 一段时间了,我必须考虑在 Stack 和 Layout 之间进行选择的因素是什么? 最佳答案 两者的主要区别在于,如果使用 HStack,HStack 的大小将根据浏览器
使用 smart gwt 4 运行应用程序时出现以下错误 核心 SmartClient JavaScript 库似乎未加载。如果继承 NoScript SmartGWT 模块,请验证 HTML 文件包
我写了一个代码来放大,并使用 smartGWT 缩小图像。但问题是包含 Canvas 无法显示它的滚动条如何解决 public class ImageViewer implements EntryPo
我正在寻找一个关于如何在 SmartGWT 中自定义数据源的好教程(现在也可以使用代码示例)。 一些细节: 我有一个 GWT 项目,它使用专有的客户端-服务器协议(protocol)来获取数据(具有基
我正面临 ListGrid 过滤器问题。我面临的问题是,当我在 ListGrid 上应用任何过滤器来编辑任何 ListGridRecord 时,只要我从列表网格的过滤器中删除了过滤后的文本,编辑过的记
几天后我将开始从事 smartGWT 项目,我想知道您有什么样的经历。为了避免使这成为对 smartGWT 或 GWT 或自由式讨论的抨击,我将为讨论提供一些指导: 你觉得提供的小部件集成得好吗?有没
试图让 Grails + smartgwt 一起工作。 设置: Grails 2.2.1(同时安装,gwt + smartgwt 插件) SmartGWT 3.1 总重量 2.5 玩了几个小时后,to
我将 SmartGWT listgrid 与数据源一起使用,通常我的过滤会触发服务器请求,但有时网格会尝试在本地过滤数据,然后不会显示任何数据。不幸的是,我无法判断是什么原因导致本地过滤。 我开始调试
我正在尝试编写进度条或向我的 Smart Gwt 应用程序添加加载 gif,它在 onModuleLoad 中开始,并在应用程序即将显示时结束。是否有某种类型的事件处理程序可以确定这一点?我已经看过,
我想在应用程序中提供时区设置,因此,我需要使用智能 Gwt 从浏览器获取时区。请告诉我获取时区的方法。实际上我在 smart gwt 应用程序中编写了 java 编码,如下所示, String tim
我有一个 smartgwt 应用程序,它创建带有 jpg/gif/png/pdf 文件的链接。该文件显示在浏览器中。我想要获取保存对话框,而不是当我想在本地计算机上保存文件时询问我的路径。我怎样才能做
从休息数据源检索数据时出现以下错误 00:00:52.439 [错误] 01:46:57.001:RDQ1:WARN:ResultSet:isc_ResultSet_1(创建者:isc_Custome
我一直在寻找一个 SmartGWT 示例,该示例将向我展示如何构建一个文件浏览器小部件,该小部件从本地服务器的根目录获取文件。用户将通过浏览器显示文件,然后他们可以选择这些文件来执行一些处理操作。 到
我想向按钮添加处理程序或监听器,每次我按下键盘上的键时,即使它不关注它,它也会响应。我怎样才能做到这一点? 最佳答案 import com.google.gwt.user.client.Event;
我有一个充满条目的列表网格,并启用了过滤。当我执行过滤器时,列表网格会相应更新。现在我想获取通过过滤器找到的结果数。我尝试添加 FilterEditorSubmitHandler但这是在过滤器实际执行
我已经研究了这个问题很长一段时间,但一直无法解决。我有一个带有字段类型图标的列表网格。我想将光标更改为“递”到图标上。 我一直在网上搜索,发现有几个解决方案。其中之一是对列表网格使用 addCellO
我是一名优秀的程序员,十分优秀!