2017-04-19 22 views
0

,所以我試圖讓2下拉在Java圖形用戶界面菜單,將允許用戶和時區之間進行選擇比較他們兩個人。但我遇到了試圖獲取用戶從lambda表達式中選擇時區變量的問題。我仍然相當新的Java所以任何幫助,將不勝感激請獲得一個時區了lambda表達式(JAVA)的

這是給我發出

tz tz1= new tz(); 

ComboBox<String> cboNation = new ComboBox<>(); 
ObservableList<String> items = FXCollections.observableArrayList 
    ("GMT+14", "GMT+13", "GMT+12", "GMT+11","GMT+10", "GMT+9", "GMT+8", 
    "GMT+7", "GMT+6", "GMT+5", "GMT+4", "GMT+3", "GMT+2", "GMT+1", 
    "GMT0" ,"GMT-1", "GMT-2", "GMT-3", "GMT-4", "GMT-5", "GMT-6", 
    "GMT-7", "GMT-8", "GMT-9", "GMT-10", "GMT-11", "GMT-12", "GMT-13", "GMT-14"); 
cboNation.getItems().addAll(items); 
cboNation.setValue(items.get(0)); 
cboNation.setOnAction(e -> 
{ 

currentIndex = items.indexOf(cboNation.getValue()); 
TimeZone tz = TimeZone.getTimeZone(timezones[currentIndex]); 
String Timezone2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(tz); 
tz1.firstdisplay = Timezone2; 
}); 

gridPane.add(new Label(tz1.firstdisplay), 0, 0); 

我希望能夠得到TZ出來的表達,並能夠代碼將其格式化爲顯示日期的字符串。如果有幫助的話,它會出現在gui上。

編輯 我引用試圖傳球程序現在運行,但時區沒有在GUI中顯示出來。我補充一點,是爲了顯示他們,但什麼也沒有發生

+1

歡迎堆棧溢出!請[開始瀏覽](http://stackoverflow.com/tour),看看該網站是如何工作的,並在題目什麼樣的問題在這裏。另請參見:[如何創建最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve) –

+0

從lambda body中調用具有所選時區的方法作爲參數,然後用它做東西(你可以把它分配給一個代表當前時區的全局變量或者漂浮在你的船上的任何東西) – Sneh

+0

順便說一句,'TimeZone'已經被java.time類'ZoneId'和'ZoneOffset'所取代。此外,您的列表是指[*'抵消 - 從 - UTC' *](https://en.m.wikipedia.org/wiki/UTC_offset)值,而不是時區。時區是特定地區偏移量變化的歷史記錄。一個時區的適當名稱是大陸/地區,如「America/Montreal」或「Asia/Kolkata」。 –

回答

0

其實你TimeZone tz變量的lambda表達式內部創建和您要使用與代碼行 String Timezone2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(tz);您的lambda表達式外的線。您應該將TimeZone tz變量聲明爲實例變量。

+0

我如何正確地做到這一點,我自己試了一下,似乎沒有工作 –