如何写PublicDialog的onClickListener回写Form TextField

How to wirte Public Dialog addClickListener write back Form TextField

我是初学者,过不了这一关,请大家帮忙

我有很多带TextField的表单(cust_no,cust_name),每个表单右边都有一个按钮,

按下按钮 一个对话框可以显示自定义记录,在选择所需的客户后, 将选中的cust_no、cust_name写回Form的Text_Field

希望把dialog写成publicclass,这样很多class的窗体都能使用这个功能,也能流畅的写cust_no和cust_name回到各自的Form TextField。

有的Form除了回填cust_no,cust_nameTextField外,有的还需要查询消费金额,写回指定的cust_amtTextField。

我的麻烦是表单 button.addClickListener 打开一个对话框, Dialog的Button_OK.addClickListener不知道我要怎么写回Form TextField还有一些有特殊的查询机制,如何自定义

由于没有确切了解您的代码结构,我只能给出一个非常笼统的答案。您通常需要的是与打开对话框的按钮关联的东西可以知道如何处理对话框的结果,并且它还可以配置对话框的确定​​按钮以执行该操作。

public class HelloWorldView extends VerticalLayout {
    public HelloWorldView() {
        TextField customerNumberField = new TextField("Customer number");
        TextField customerNameField = new TextField("Customer name");
        Button nameDialogButton = new Button("Open dialog", dialogOpenClick -> {
            showDialog(customer -> {
                customerNumberField.setValue(customer.getNumber());
                customerNameField.setValue(customer.getName());
            });
        });

        add(customerNumberField, customerNameField, nameDialogButton);
    }

    private void showDialog(Consumer<Customer> selectionAction) {
        Select<Customer> customerSelect = new Select<>(new Customer("1", "Customer 1"),
                new Customer("2", "Customer 2"));
        customerSelect.setTextRenderer(customer -> customer.getName());

        Dialog dialog = new Dialog();
        dialog.add(customerSelect);
        dialog.add(new Button("Select customer", click -> {
            Customer selectedCustomer = customerSelect.getValue();
            if (selectedCustomer != null) {
                selectionAction.accept(selectedCustomer);
            }
            dialog.close();
        }));

        dialog.open();
    }
}