Tree E4 RCP应用程序侦听最大化或非最大化

Tree E4 RCP应用程序侦听最大化或非最大化,tree,resize,rcp,e4,maximize,Tree,Resize,Rcp,E4,Maximize,我一直在寻找我的E4 RCP应用程序何时通过用户单击应用程序窗口右上角的Windows7或Windows10最大化按钮而最大化。最终,我想在调整TreeViewer布局的大小时调整TreeColumn的大小。我在treeViewer中的树上有一个侦听器,它侦听树大小的变化-这使用ControlListener,使用controlResized(ControlEvent e)方法。如果我点击并拖动调整应用程序窗口的大小,这一切都很好。但是,当我单击最大化按钮时,布局会改变大小,而列不会改变大小。我

我一直在寻找我的E4 RCP应用程序何时通过用户单击应用程序窗口右上角的Windows7或Windows10最大化按钮而最大化。最终,我想在调整TreeViewer布局的大小时调整TreeColumn的大小。我在treeViewer中的树上有一个侦听器,它侦听树大小的变化-这使用ControlListener,使用controlResized(ControlEvent e)方法。如果我点击并拖动调整应用程序窗口的大小,这一切都很好。但是,当我单击最大化按钮时,布局会改变大小,而列不会改变大小。我怀疑监听器太晚了,在最大化/取消最大化上发生重画之前,没有检测到调整大小

也尝试过用图标化和去图标化方法使用Listener,但它们在这里不起作用,因为它们处理最小化和非最小化

还尝试使用IPartListener进行活动、可见等。。。。这种情况也会发生在它被调整大小,但没有在正确的时间触发以正确地重画相同的问题

我真正想要的是一个最大化屏幕的解决方案,检查布局的大小(这是我认为我正在做的),然后相应地计算列大小。但是,单击“最大化”或“取消最大化”不会触发此操作,只有通过拖动和调整大小才能成功。也许这就是我在这里错过的东西。提前感谢您的建议

  • 马尔夫

    • 谢谢你,格雷格-449!现在工作得很好

      在创建树的类中,我使用
      TreeColumnLayout
      ,在创建列的类中,使用
      ColumnWeightData
      传递TreeColumnLayout。(必须删除所有其他以前编写的侦听器,以便调整列的大小,因为它们发生冲突并阻止此操作正常工作。)

      值得注意的是,在我的情况下,我使用了一个“包装器”组合来放置我的CheckboxTreeViewer(可能并不总是必需的),如所示:

      如前所述,我使用TreeColumnLayout创建树中的所有列,在其中设置ColumnWeightData的权重、最小大小和可调整大小的属性

      final TreeColumn column = viewerColumn.getColumn();
      tcLayout.setColumnData(column, new ColumnWeightData(weight, minimumSize, resizable));
      
      希望这个细节能帮助其他人


      这里还有很多其他的TreeColumnLayout和ColumnWeightData示例:

      如果您认为需要重画,您可以随时调用
      Control.redraw()
      。如果将
      TreeColumnLayout
      ColumnWeightData
      一起使用,则布局应该自动处理所有大小调整。
      final TreeColumn column = viewerColumn.getColumn();
      tcLayout.setColumnData(column, new ColumnWeightData(weight, minimumSize, resizable));