![](/img/trans.png)
[英]Is it possible to show Toast(message) on a button with 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.