eclipshine

          Eclipse主題站

          如何從TableViewer的Table中取出對(duì)應(yīng)于某個(gè)TableItem的對(duì)象

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

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

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

              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都已經(jīng)被deprecated了,因此這也不會(huì)有很大的問題。

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

          主站蜘蛛池模板: 沈丘县| 南部县| 湖口县| 汪清县| 临泉县| 藁城市| 仙居县| 杂多县| 罗城| 二手房| 碌曲县| 彩票| 乌鲁木齐县| 金门县| 卫辉市| 通化县| 晋州市| 松潘县| 连州市| 慈溪市| 米泉市| 明溪县| 昌黎县| 台前县| 临猗县| 建湖县| 南充市| 房产| 阿巴嘎旗| 昆明市| 通辽市| 宿州市| 通城县| 定结县| 南木林县| 密云县| 左云县| 昌江| 武功县| 稻城县| 临武县|