我在窗口上使用鎖定對象時,我想阻止: 當用戶單擊按鈕「單擊我」時,我想打開包含日曆的窗口被打開,並且用戶應該在日曆中選擇一個日期。用戶應該被阻止,直到他選擇的日期,所以我寫了這個:使用簡單對象時阻止Web應用程序。等待
Button button = new Button("Click Me");
button.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
synchronized (Lock.getInstance()) {
DateChooser dateChooser = new DateChooser(new com.kopiright.xkopi.lib.type.Date(2013, 12, 9));
UI.getCurrent().addWindow(dateChooser);
System.out.println("!!!!!!!!!!!I'm waiting ...");
try {
Lock.getInstance().wait();
System.out.println("I'm waiting ...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
當用戶點擊按鈕,窗口不顯示和網頁等待無限。 問題是,我阻止了應用程序啓動的原則類。 那麼如何防止這一點。 我應該創建一個顯示DateChooser窗口的單獨線程。
這裏的通知電話: 在DateChooser類我寫了這個:
@Override
public void valueChange(ValueChangeEvent event) {
synchronized(Lock.getInstance()) {
String date = String.valueOf(event.getProperty().getValue());
Calendar cal = Calendar.getInstance(Locale.FRANCE);
cal.setTime((java.util.Date) event.getProperty().getValue());
setSelectedDate(new NotNullDate(cal));
this.close();
Lock.getInstance().notify();
}
}
這裏的鎖類
public class Lock
{
private static Lock lockInstance;
public static Lock getInstance()
{
if (lockInstance == null)
{lockInstance = new Lock();
System.out.println("Creating a lock instance ...");}
return lockInstance;
}
}
我搜索了很多關於如何禁用當前頁面,直到用戶選擇一個日期,但我沒有找到有用的東西。謝謝:) – AmiraGL
我覺得你可以簡單地做'window.setVisible(false)',但我不是鞦韆專家,有更好的方法可以肯定;) –