3

私はかなり長い間この問題に取り組んできましたが、それを解決することができませんでした。フィールドタイプのアイコンが付いたリストグリッドがあります。アイコンの上にカーソルを「手」に変更したいと思います。

私はウェブを検索していて、いくつかの解決策が存在することを知りました。addCellOverHandlerそれらの1つは、リストグリッドに使用しています。しかし、listgridの指定されたフィールドのカーソルを変更する方法がわかりません。

this.addCellOverHandler(new CellOverHandler() {

    @Override
    public void onCellOver(CellOverEvent event) {
    // not able to get the field and setCursor()        
    }
});

listgridの私のフィールドは次のように定義されています。

ListGridField iconField = new ListGridField("icon");
iconField.setAlign(Alignment.CENTER);
iconField.setType(ListGridFieldType.ICON);
iconField.setIcon("icons/icon.gif");

フォーラムで誰かが指摘したようにsetCursor()、listgridにはメソッドが存在しますが、フィールドだけにはメソッドがありません...

誰かが手がかりを持っているなら...ありがとう

4

4 に答える 4

2

もう少し(もっと...)グーグルした後、私はこれを見つけました:

http://forums.smartclient.com/showthread.php?t=15748

getCellStyle重要なのは、listgridのメソッドをオーバーライドすることです。私が使用するコードは次のとおりです。

@Override
protected String getCellStyle(ListGridRecord record, int rowNum, int colNum) {
    if (colNum==6){
        return "EC_pointer";
    }
    return super.getCellStyle(record, rowNum, colNum);
}

そして私のCSSファイルで:

.EC_pointer { 
    cursor: pointer; 
}

主なフォールアウトは、フィールドの列番号を事前に知っておく必要があることです。

于 2012-05-02T10:05:06.883 に答える
2

私のコメントとここからの情報の追加に加えて、Firefox5.0でSmartGwt2.4で動作する次のコードをテストしました。

demandesGrid.setCanHover(true);
demandesGrid.setShowHover(false);
demandesGrid.addCellHoverHandler(new CellHoverHandler() {
    @Override
    public void onCellHover(CellHoverEvent event) {
        if (event.getColNum() == demandesGrid.getFieldNum("icon")) {
        //  SC.say(demandesGrid.getChildren()[3].toString());
            demandesGrid.getChildren()[3].setCursor(Cursor.POINTER);
        } else {
            demandesGrid.getChildren()[3].setCursor(Cursor.DEFAULT);
        }
    }
});

ListGridBodyのインデックスが一定かどうかはわかりません。私はそれをSC.say線で見つけました。

于 2012-05-02T19:27:00.973 に答える
0

どうですか

grid.addCellOverHandler(new CellOverHandler() {
  @Override
  public void onCellOver(CellOverEvent event) {
    //cellOver event to get field and refresh the cell
    //grid.refreshCell(i, j);
  }
});
于 2012-05-01T05:30:30.567 に答える
0

最良のアプローチはここで完全に示されています(「コメント/統計」フィールドがどのように初期化されているかを見てください)。

つまり、ListGridを拡張し、createRecordComponentメソッドをオーバーライドする必要があります。この方法では、任意のカスタムコンポーネントを作成でき、グリッドセルに表示されます。

また、ListGridは次のように初期化する必要があります。

listGrid.setShowRecordComponents(true);
listGrid.setShowRecordComponentsByCell(true);
于 2012-11-06T00:54:07.623 に答える