我目前在一个学校项目上工作,我们正在创建一个GWT Web应用程序,该应用程序使用GeoChart小部件显示有关我们已爬网的服务器的信息。简而言之,我希望在GeoChart小部件的顶部创建一个文本框,该文本框显示一个交互式世界地图,该地图现在占据了整个屏幕以输入信息。我已经进行了广泛的搜索,但是无法给出答案。

代码如下:

@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小部件和文本框小部件都添加到其中。这样做的最佳方法是什么?

最佳答案

我相信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();

}

关于java - 在gwt java顶部添加文本框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40417335/

10-09 03:49