2016-11-04 10 views
1

私は現在、GeoChartウィジェットを使ってクロールしたサーバーに関する情報を表示するGWT Webアプリケーションを作成する学校プロジェクトに取り組んでいます。簡単に言えば、GeoChartウィジェットの上にテキストボックスを作成し、インタラクティブな世界地図を表示して、今すぐ画面全体を入力して情報を入力したいと考えています。私はかなり広範囲に検索しましたが、私は答えを出すことができませんでした。次のようにここでgwt Javaの上にテキストボックスを追加

はコードです:

@Override 
    public void onModuleLoad() { 

     dataReader = (DataReaderAsync) GWT.create(DataReader.class); 

     RootLayoutPanel.get().add(getSimpleLayoutPanel()); 

     // Create the API Loader 
     ChartLoader chartLoader = new ChartLoader(ChartPackage.CORECHART); 
     chartLoader.loadApi(new Runnable() { 

      @Override 
      public void run() { 

       getSimpleLayoutPanel().setWidget(getGeoChart()); 
       drawGeoChart(); 
      } 
     }); 
    } 

GeoChartがウィジェットであるため、にそれを表示される今SimpleLayoutPanel(私はこれが正しい単語であるかどうかわからないです)の下で包まれています全画面表示。上記のように、私はgeoChartの上にテキストを含めることを望みます。私の理解から、テキストを含む別のウィジェットを作成し、GeoChartウィジェットとテキストボックスウィジェットの両方を追加する必要があります。これを行う最善の方法は何でしょうか?

+0

私は[DockLayoutPanel](http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/DockLayoutPanel.html)(または[DockPanel](http: /www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/DockPanel.html))、TextBoxを 'north'ドックに、' GeoChart'を 'center'ドックに追加します。 – Adam

+0

こんにちは、DockLayoutPanelを使用してTextBoxとGeoChartの両方を追加しようとしましたが、何らかの理由でGeoChartが表示されません。私は以下に答えた解決策を見つけました。しかし、助けてくれてありがとう! –

答えて

0

ご質問ありがとうございます。この問題を解決するために、GWT(Composite)内でカスタムウィジェットAPIを使用しました。以下はコードです:

private static class CombinedWidget extends Composite { 

     public CombinedWidget() { 
     // place the check above the text box using a vertical panel. 
     VerticalPanel panel = new VerticalPanel(); 
     DockLayoutPanel dPanel = new DockLayoutPanel(Unit.EM); 
     panel.setSpacing(13); 
     panel.add(nameProject); 
     nameProject.setStyleName("gwt-Group-Label"); 
     panel.add(className); 
     panel.add(nameKs); 
     panel.add(nameEsmond); 
     panel.add(nameBowen); 
     panel.add(nameAaron); 
     dPanel.addWest(panel, 13); 
     dPanel.add(getGeoChart()); 

     // all composites must call initWidget() in their constructors. 
     initWidget(dPanel); 

     setWidth("100%"); 

     } 

実際、私は元のアイデアから変更しました。一番上に置くのではなく、ラベルをVerticalPanelに貼り付けてから、VerticalPanelとDockLayoutPanelを一緒に追加するCombinedWidget(カスタムウィジェット)を作成しました。次に、VerticalPanel(すべてのラベルを含む)とGeoChartをDockLayoutPanelに追加しました。

これは、ラベルとジオチャートを同じページに表示するという私の問題を解決しました。元々はVerticalPanelに追加しましたが、VerticalPanelが上にオーバーレイされているため、GeoChartを読み取らないため動作しませんジオチャートの)

私のアプリの画像を視覚化したい場合は、そう言いなさい!

0

私はDialogBoxがあなたの問題を解決できると確信しています。人々は通常、特定のイベントがトリガされたときに表示にポップアップし、ユーザが何らかの操作を完了した後に消えるような方法でDialogBoxをプログラムします。あなたの特別なケースでは、DialogBoxを最初から表示させ、決して消えないようにすることができます。そして最も重要な点は、DialogBoxウィジェットをgeoChartウィジェットに追加する必要がないことです。 dialogBox.center()またはdialogBox.show()を呼び出すと、あなたのために魔法が実行されます。

ここにサンプルコードを示します。

@Override 
public void onModuleLoad() { 

    dataReader = (DataReaderAsync) GWT.create(DataReader.class); 

    RootLayoutPanel.get().add(getSimpleLayoutPanel()); 

    // Create the API Loader 
    ChartLoader chartLoader = new ChartLoader(ChartPackage.CORECHART); 
    chartLoader.loadApi(new Runnable() { 

     @Override 
     public void run() { 

      getSimpleLayoutPanel().setWidget(getGeoChart()); 
      drawGeoChart(); 
     } 
    }); 

    // NOTE: the first argument 'false' makes sure that this dialog box 
    // will not disappear when user clicks outside of it 
    // NOTE: the second argument 'false' makes sure that mouse and keyboard 
    // events outside of the dialog box will NOT be ignored 
    DialogBox dialogBox = new DialogBox(false, false); 
    DialogBox.setText("Demo"); 

    HorizontalPanel panel = new HorizontalPanel(); 
    panel.setSpacing(5); 

    InlineLabel labelOfTextBox = new InlineLabel("Label"); 
    TextBox textBox = new TextBox(); 

    panel.add(labelOfTextBox); 
    panel.add(textBox); 

    dialogBox.setWidget(panel); 

    // show up in the center 
    dialogBox.center(); 

} 
+0

私はDialogBoxの使用を検討していましたが、TextBoxは情報(グループプロジェクト名やグループ名など)を表示することのみを目的としていましたので、DialogBoxを使用したくないので少し不必要な感じでした。代わりに、私はそれにテキストを追加するためのカスタムウィジェットを作った。以下の私の解決策を見てください。 –

+0

@AaronLow私はあなたの問題を解決してうれしい、参照してください。 – dydigging

関連する問題