5

私は現在SmartGWTを使用しており、gwtStandardVerticalPanelなどのパネルをスマートGWTウィンドウに含める方法を取得しようとしています。VerticalPanelの理由は、コンテンツ全体をリセットしなくても、verticalpanelオブジェクトにウィジェットを追加できるためです。次に例を示します。

HTMLPane hPaneObj = new HTMLPane();  
hPaneObj.setContents("Foo");

ここで追加すると、私ができることだけがわかります。

hPaneObj.setContents(hPaneObj.getContents() + "Bar");

これは私が必要としているものではありません。

この問題は、VerticalPanelを追加した後に発生します。パラメータとしてtrueを指定して呼び出された「setCanSelectText」メソッドを使用しても、ウィンドウ内のテキストを選択できません。以下は私がまとめた短い例です:

 public void onModuleLoad() {
  Window theWindow = new Window();
  theWindow.setTitle("Good evening");
  theWindow.setWidth(500);
  theWindow.setHeight(500);
  theWindow.setCanSelectText(true);

  VerticalPanel vp = new VerticalPanel();
  vp.add(new HTML("foo"));
  vp.add(new HTML("bar"));
  theWindow.addItem(vp);
  Canvas canvas = new Canvas();
  canvas.addChild(theWindow);
  canvas.draw();
 }

しかし、HTMLPaneでは、コンテンツ全体をリセットせずに追加することができないことに非常に驚いています。

アドバイスをいただければ幸いですが、パネルに「追加」できるようにする必要があります。垂直パネルを使用するというアイデアは特に好きではありませんが、前述の方法を見つけるか、垂直パネルにアクセスできるようにする方法、つまりテキストを選択する方法を見つける必要があります。

どうもありがとう

クリストファー。

4

3 に答える 3

1

VerticalPanelは htmlを使用してそのtableコンテンツを作成しますが、この場合はおそらく必要なものではありません。一般に、HTML では、xml のような性質のため、既存のコンテンツに加えてプレーンな HTML を追加することはできません。たとえば、次の html があるとします<div>some text</div>。テキストを追加する場合、追加するポイントはタグに関連している必要があります。divたとえば、テキスト全体を再挿入せずsomeに何かを追加することはできません。text

あなたの場合、FlowPanel(これは ですdiv)を使用して HTML を追加しますInlineHTML(HTML を でラップしますspan)。spanラップしたくない場合は、HTMLPane例のようにテキストを再挿入する必要があります。

于 2010-03-02T13:54:14.217 に答える
1

ウィンドウ全体 (ヘッダーとアイコンを含む) ではなく、選択が許可されている要素だけに canSelectText を設定する必要があります。

したがって、2つのオプション:

1) プレーンな GWT ウィジェットを SmartGWT コンテナーに追加すると、WidgetCanvas で自動ラップされます。WidgetCanvas で自分でラップして setCanSelectText() できます。

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/widgets/WidgetCanvas.html

2) Canvas をサブクラス化し、getInnerHTML() をオーバーライドして、既知の ID を持つ DIV またはその他の要素を返し、GWT の低レベル DOM 操作 API を使用してそのコンテンツを操作します。

于 2010-03-02T15:00:39.543 に答える
0

問題は同形で解決されました:

http://forums.smartclient.com/showthread.php?p=39351#post39351

于 2010-03-04T11:16:53.967 に答える