【问题标题】:GWT: When to use Button and when to use ButtonCellGWT:何时使用 Button 以及何时使用 ButtonCell
【发布时间】:2012-10-30 23:27:42
【问题描述】:

我观看了有关 GWT 性能的 Google I/O 视频,该视频建议尽可能使用 Cell Widget,因为它们比普通 Widget 更快且重量更轻。

我正在尝试确定是否应该使用:

  • com.google.gwt.user.client.ui.Button(按钮小部件);或
  • com.google.gwt.cell.client.ButtonCell(单元格小部件)

我读过一些关于小部件和单元格的相互矛盾的文献;一些作者说只有在没有任何需要响应的事件时才使用单元格。

所以我问:单元小部件没有处理程序并且无法响应事件是真的吗?如果是这样,肯定会被点击的ButtonCell 有什么用!如果这不是真的,那么似乎单元小部件是“旧”小部件框架的总 替代 - 是真的吗,或者还有Button 和其他的用例“旧”小部件是否有亲缘关系?

【问题讨论】:

    标签: java gwt user-interface widget


    【解决方案1】:

    严格来说,ButtonCell 不是一个“单元格小部件”,它是一个“单元格”,它被 CellList 或 CellTable 等单元格小部件用于呈现其内容。

    用于显示大量类似结构的数据(列表/表格)以及在此类表格中呈现特定“单元格”的单元格小部件 - 您应该使用这些轻量级的无状态小部件(ButtonCell、TextCell)。好处来自生成的 dom 元素和 JS 的数量更少。此外,CellWidgets 仍然可以接收浏览器事件,但您应该明确指定它。有关此主题的更多信息 - 请参阅 official Google's guide

    如果您不使用单元格小部件 - 您不需要使用单元格,例如,如果您想制作一个用户输入表单并放置一些标签和按钮 - 如果您需要显示,请使用标签和按钮小部件> 100 行的列表 - 您可能希望在 CellList 小部件中使用 TextCell 和 ButtonCell。

    【讨论】:

    • 感谢@Andrey Mormysh (+1) - 不过我还是有点困惑!我没有在名称“ButtonCell”、“Cell”等与“table cells”之间建立联系。单元格真的只用于在包含大量数据的表格或列表的行中呈现小部件吗?如果是这样,那么您为什么希望它们轻量级是有道理的(一个有 10,000 行的表可能需要 10,000 个按钮!)。您能否确认我是否正确理解您,如果没有,请给我一个具体示例,说明何时使用单元小部件?再次感谢!
    • 在同一个注释中,总是将面板组织为表格然后向其中添加单元格小部件有什么问题?这似乎是一种“作弊”并且只使用单元小部件的方式!单元格可以存在于表格之外,还是需要绑定到某种父表格?
    • 只有当同一个实例用于渲染多个对象时,使用单元格才有意义。请参阅CellTable 示例 - 列由同一组单元格呈现,例如“类别”列只有一个单元格实例,用于呈现不同的数据和处理来自不同 dom 元素的事件。
    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2015-01-07
    • 2016-09-23
    • 2021-02-09
    • 2019-08-12
    相关资源
    最近更新 更多