2016-07-27 53 views
0

我在IntelliJ中使用Scene Builder和Java FX製作我的第一個GUI程序。我想作一個選擇框,以便我看着Java文檔在這裏:IntelliJ不會編譯從文檔複製的基本JavaFX程序

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ChoiceBox.html

我根據我的choicebox關閉文檔和發現的IntelliJ不承認的方法。所以我只是直接從文檔粘貼複製,仍然有錯誤。我的代碼如下:

package sample; 

import javafx.scene.control.ChoiceBox; 

public class Controller { 
ChoiceBox cb = new ChoiceBox(); 
cb.getItems().addAll("item1", "item2", "item3"); 
} 

的「.getItems()」是紅色的文本和錯誤‘無法解析符號getItems’是列出的錯誤。其他人編譯該程序,併爲他們的機器工作。

回答

3
cb.getItems().addAll("item1", "item2", "item3"); 

需要放在方法裏面。

正確的代碼:

package sample; 

import javafx.fxml.FXML; 
import javafx.scene.control.ChoiceBox; 

public class Controller { 
    @FXML private ChoiceBox cb; 

    public void initialize() { 
     cb.getItems().addAll("item1", "item2", "item3"); 
    } 
} 

initialize方法將由FXMLLoader注入字段之後被調用。


編輯:添加@ Fabian的上FXML裝載/初始化意見

+0

酷。現在我只需要實現這個功能。它現在編譯,但是當點擊選擇框時沒有顯示選擇。 ID的匹配和所有這一切。我會猜測我需要做一些其他的方法來填充選擇或什麼? – user2778506

+0

@ user2778506:您需要將'cb'保留爲字段並使用@ FXML'註釋:'@FXML private ChoiceBox cb;',但不要初始化它(FXMLLoader會這樣做)。你可以在這裏找到示例:http://stackoverflow.com/documentation/javafx/1580/fxml-and-controllers#t=201607272009269385103,只需在fxml中查找'fx:id'屬性以及控制器中相應的字段... – fabian

+0

@fabian感謝照顧'JavaFX'的東西,我從來沒有真正使用過這個平臺:) – Jeeter