簡體   English   中英

Vaadin按鈕setEnabled(false)不啟用

[英]Vaadin button setEnabled(false) doesn't enable

Vaadin新手:當用戶按下按鈕時,我想禁用它,因此他知道他點擊了它並且后台正在進行一些工作。 當(長)任務完成后,我想啟用該按鈕。

為此,我使用2個線程(后台和工作)但由於某種原因,在任務結束時沒有啟用該按鈕。

換句話說,一旦點擊它就會啟用(false)並且永遠不會回來。 為什么? 我該如何解決?

        button.addClickListener(new ClickListener() 
    {
        public void buttonClick(ClickEvent event) 
        {
            Thread background = new Thread(new Runnable(){

                @Override
                public void run()
                {
                    Thread work = new Thread(new Runnable(){

                        @Override
                        public void run()
                        {
                            button.setEnabled(false);
                            try
                            {
                                Thread.sleep(2000); //long work here!
                            } catch (InterruptedException e)
                            { 
                                e.printStackTrace();
                            }

                            button.setEnabled(true); //doesn't enable at the end of the long work!
                        }});

                    work.start();
                    try
                    {
                        work.join();
                    } catch (InterruptedException e)
                    { 
                        e.printStackTrace();
                    }
                }});

            background.start();   
        }
    });

也許最好的方法是使用Button.setDisableOnClick(true)作為按鈕,並直接在沒有后台線程的事件處理程序中進行處理。 這將向用戶顯示標准加載指示器,直到完成處理。

否則,您需要啟用服務器推送(@Push)並記住在更新UI之前在后台線程中使用UI.access()。 請參閱https://vaadin.com/book/-/page/advanced.push.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM