Я передал кнопку в TabLayoutPanel и при нажатии на кнопку в GWT ничего не происходит - PullRequest
0 голосов
/ 30 апреля 2018

Я добавил кнопку в 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;
}

Итак, я хочу что-то отобразить при нажатии кнопки. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 30 апреля 2018

Не создавайте свою форму в виде строки.

Когда вы пытаетесь объединить виджет (Button или TextBox) со строкой, вызывается метод toString() виджета.

"string" + sendbutton + "string"

действительно:

"string" + sendbutton.toString() + "string"

toString() возвращает HTML-фрагмент виджета, но он не будет содержать никаких обработчиков. Вот почему ClickHandler никогда не будет выполнен.

Вместо этого вы должны создать свою форму, используя некоторую панель, например Grid или FlexTable.

Например:

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 следующим образом:

tabPanel.add(searchAnyTransaction(sendButton, nameField), "Transaaction Status");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...