我在TabLayoutPanel中传递了一个按钮,当单击按钮时,GWT中没有发生任何事情

我在TabLayoutPanel中传递了一个按钮,当单击按钮时,GWT中没有发生任何事情,gwt,Gwt,我在TabLayoutPanel中添加了一个按钮,点击按钮我想显示一些东西,但什么也没有发生 下面是我正在尝试的示例代码: public void onModuleLoad() { final TabLayoutPanel tabPanel = new TabLayoutPanel(2.5, Unit.EM); final Button sendButton = new Button("Send"); final TextBox nameField = new Text

我在TabLayoutPanel中添加了一个按钮,点击按钮我想显示一些东西,但什么也没有发生

下面是我正在尝试的示例代码:

public void onModuleLoad() {

    final TabLayoutPanel tabPanel = new TabLayoutPanel(2.5, Unit.EM);
    final Button sendButton = new Button("Send");
    final TextBox nameField = new TextBox();

    //Tab
    sendButton.addStyleName("sendButton");
    nameField.getElement().setId("PID");
    sendButton.getElement().setId("sendButton");

    String row = searchAnyTransaction(sendButton, nameField);

    tabPanel.add(new HTML(row), "Transaaction Status");
    tabPanel.add(new HTML("that"), "[that]");
    tabPanel.add(new HTML("the other"), "[the other]");
    tabPanel.setPixelSize(500, 400);
    final RootLayoutPanel rp = RootLayoutPanel.get();

    rp.add(tabPanel);

    nameField.setFocus(true);
    nameField.selectAll();

    //On sendButton click , Clickhandler event should call.
    // Create a handler for the sendButton and nameField
            sendButton.addClickHandler(new ClickHandler(){

                @Override
                public void onClick(ClickEvent event) {
                    rp.add(sendButton);
                    //how to add dialog box to display 
                    //  Want to display something.          
                }

            });

}



public static String searchAnyTransaction(Button sendbutton, TextBox namefield2){


    String htmlForm = ""
            + "<TABLE BORDER=\"2\" ><TR><TH height=\"40\" style=\"width:20%;\"><h3 class=“Search” role=\"tab\" aria-expanded=\"true\" aria-selected=\"true\" tabindex=\"0\">Search</h3></TH>"
            + "<TH height=\"40\" style=\"width:20%;\"><label for=\"fname\">PID:</label></TH><TD height=\"40\" style=\"width:50%;\">" + namefield2 
            + "<TD height=\"40\" style=\"width:20%;\">"+ sendbutton +"</TD></TR>"
            + "</TABLE>";

    return htmlForm;
}
模块加载()上的公共void{
最终TabLayoutPanel tabPanel=新TabLayoutPanel(2.5,单位为EM);
最终按钮sendButton=新按钮(“发送”);
最终文本框名称字段=新文本框();
//标签
sendButton.addStyleName(“sendButton”);
nameField.getElement().setId(“PID”);
sendButton.getElement().setId(“sendButton”);
String行=searchAnyTransaction(sendButton,nameField);
tabPanel.add(新的HTML(行),“操作状态”);
添加(新的HTML(“那个”),“[那个]”);
tabPanel.add(新的HTML(“另一方”),“[另一方]”;
tabPanel.setPixelSize(500400);
final RootLayoutPanel rp=RootLayoutPanel.get();
rp.add(tabPanel);
nameField.setFocus(true);
nameField.selectAll();
//单击sendButton时,Clickhandler事件应调用。
//为sendButton和nameField创建处理程序
addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
rp.add(发送按钮);
//如何添加要显示的对话框
//我想展示一些东西。
}
});
}
公共静态字符串searchAnyTransaction(按钮sendbutton,文本框名称字段2){
字符串htmlForm=“”
+“搜索”
+“PID:”+namefield2
+“”+sendbutton+“”
+ "";
返回htmlForm;
}

所以我想在点击按钮时显示一些东西。请帮助我。

不要将表单构建为字符串

当您尝试用字符串连接小部件(
按钮
文本框
)时,将调用小部件的
toString()
方法

"string" + sendbutton + "string"
事实上:

"string" + sendbutton.toString() + "string"
toString()
返回小部件的html片段,但它不包含任何处理程序。这就是为什么永远不会执行
ClickHandler

相反,您应该使用一些面板构建表单,如或

例如:

public static Grid searchAnyTransaction(Button sendbutton, TextBox namefield2){
    Grid grid = new Grid(1, 4);
    grid.setText(0, 0, "Search");
    grid.setText(0, 1, "PID:");
    grid.setWidget(0, 2, namefield2);
    grid.setWidget(0, 3, sendbutton);

    return grid;
}
并将其添加到选项卡面板,如下所示:

tabPanel.add(searchAnyTransaction(sendButton, nameField), "Transaaction Status");

不要将表单构建为字符串

当您尝试用字符串连接小部件(
按钮
文本框
)时,将调用小部件的
toString()
方法

"string" + sendbutton + "string"
事实上:

"string" + sendbutton.toString() + "string"
toString()
返回小部件的html片段,但它不包含任何处理程序。这就是为什么永远不会执行
ClickHandler

相反,您应该使用一些面板构建表单,如或

例如:

public static Grid searchAnyTransaction(Button sendbutton, TextBox namefield2){
    Grid grid = new Grid(1, 4);
    grid.setText(0, 0, "Search");
    grid.setText(0, 1, "PID:");
    grid.setWidget(0, 2, namefield2);
    grid.setWidget(0, 3, sendbutton);

    return grid;
}
并将其添加到选项卡面板,如下所示:

tabPanel.add(searchAnyTransaction(sendButton, nameField), "Transaaction Status");