eclipshine

          Eclipse主題站

          如何從TableViewer的Table中取出對應于某個TableItem的對象

          TableViewer可以方便的將一個模型對象,轉換成對應的Table的顯示。而有時候,我們只能得到Table中的TableItem對象,而無法 直接通過TableViewer的getSelection()來得到模型對象,這時候要如何來得到模型對象呢?例如,在table的 MouseTrackListener的事件中,可以通過鼠標事件的x,y,以及table的getTableItem(Point)來得到一個 TableItem,但是無法得到TableViewer的Selection。這時候,問題就來了。很顯然,TableItem和模型對象是一一對應 的,因此,從TableItem得到模型對象顯然也是可行的。

          實際上,我們都知道每一個Widget都有一個data字段,可以被賦予任何類型的對象。在TableViewer中,TableItem的這個字段所賦予的就是模型對象。因此,只需要調用TableItem的getDate(),既可以得到其對應的模型對象了。

          對于大部分的Viewer大致如此。但是我所知道的例外的,是TableTreeViewer,它的TableItem中的data并沒有值。但是有一個 key為"TableTreeItemID"的對象,這返回的是一個TableTreeItem,在由這個TableTreeItem的getData(),即可以得到模型對象了。

              table.addMouseTrackListener(new MouseTrackAdapter() {
                  public void mouseHover(MouseEvent e) {
                      Point point = new Point(e.x, e.y);
                      TableItem item = table.getItem(point);
                      if (item==null)return;
                      TableTreeItem data2 = (TableTreeItem) item.getData("TableTreeItemID");
                      Object data3 = data2.getData();
                      if (data3 instanceof IAttributeDescriptor) {
                          IAttributeDescriptor iac =(IAttributeDescriptor)data3;
                          table.setToolTipText(iac.getAttributeDescription());
                      }
                  }
              });

          不過在3.1中,TableTree和TableTreeViewer都已經被deprecated了,因此這也不會有很大的問題。

          posted on 2005-09-21 10:32 Living Not Striving 閱讀(2025) 評論(0)  編輯  收藏 所屬分類: RCP

          主站蜘蛛池模板: 左贡县| 板桥市| 新巴尔虎左旗| 安阳县| 佛学| 旌德县| 南康市| 钟祥市| 宜川县| 阿拉善左旗| 景德镇市| 栾城县| 文水县| 固始县| 克山县| 杭州市| 徐州市| 稷山县| 阜康市| 工布江达县| 大埔县| 丰城市| 镇巴县| 全州县| 历史| 禹州市| 三门县| 兴宁市| 额敏县| 崇仁县| 射洪县| 息烽县| 巴林右旗| 浙江省| 砀山县| 桐城市| 房山区| 山东| 东丰县| 治多县| 江津市|