4

私は今日JavaFXを使い始めましたが、すでにアドバイスが必要です。MainApplication (ファイルに ApplicationController が指定されている)applicaton.fxmlのメソッドで FXMLLoader を使用して、(Oracle SceneBuiler で作成された) をロードします。start(Stage ...)application.fxml

<AnchorPane id="AnchorPane" disable="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0" styleClass="theme" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="app.AppController">
...more code here...
<ComboBox id="cmb_locations" fx:id="cmb_locations">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="Item 1" />
            <String fx:value="Item 2" />
            <String fx:value="Item 3" />
        </FXCollections>
    </items>
</ComboBox>

これで、 に があり、ComboBox3applicaton.fxmlつのアイテム (既定のアイテム) があります。必要なのはComboBox、起動時に独自の値を入力することです。app.AppControllerそれを達成する方法と、関連するコードスニペット(または同様のもの)をどこに配置するかを知っている人はいますか? 前もって感謝します。

4

3 に答える 3

8

fxml ファイル用のコントローラがあります。そこで、ComboBox にアクセスできます。このコードを要素のセットアップリストに配置できます(おそらくinitialize()メソッドで):

fxml ファイルを本当に編集したくない場合は、cmb_locations.getItems().clear();新しいリストをセットアップする前に、最初にリストをクリアすることができます。

public class ApplicationController implements Initializable {

    @FXML
    ComboBox cmb_locations;
    ...
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        ...
        List<String> list = new ArrayList<String>();
        list.add("Item A");
        list.add("Item B");
        list.add("Item C");
        ObservableList obList = FXCollections.observableList(list);
        cmb_locations.getItems().clear();
        cmb_locations.setItems(obList);
        ...
    }
}
于 2013-08-21T15:35:14.543 に答える
3

コントローラーで、Initializable インターフェイスを実装します。次に、initialize メソッドで、コードを追加してコンボ ボックスをロードします。

于 2013-08-21T15:23:01.987 に答える