質問に答えるうちにChoiceBox
私は興味深い問題を発見しました(バグ、おそらく?)。 Java 1.8u60では、ChoiceBox
には、setOnShown
、setOnShowing
、setOnHidden
、setOnHiding
の4つのメソッドが追加されています。しかし、私はそれらを働かせることはできません!ChoiceBox onShown onHiddenメソッドは機能しませんJavaFX
public class ComboBoxSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override public void start(Stage stage) {
stage.setTitle("ComboBoxSample");
Scene scene = new Scene(new Group(), 450, 250);
final ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll(
"[email protected]",
"isabella.jo[email protected]"
);
comboBox.setOnShown(event -> {
System.out.println("ComboBox onShown");
System.out.println(comboBox.getSelectionModel().getSelectedIndex());
});
comboBox.setOnShowing(event -> {
System.out.println("ComboBox setOnShowing");
System.out.println(comboBox.getSelectionModel().getSelectedIndex());
});
ChoiceBox<String> choiceBox = new ChoiceBox<>();
choiceBox.setItems(FXCollections.observableArrayList(
"New Document", "Open ")
);
choiceBox.setOnShown(event -> {
System.out.println("ChoiceBox onShown");
System.out.println(choiceBox.getSelectionModel().getSelectedIndex());
});
choiceBox.setOnShowing(event -> {
System.out.println("ChoiceBox onShowing");
System.out.println(choiceBox.getSelectionModel().getSelectedIndex());
});
choiceBox.setOnHidden(event -> {
System.out.println("ChoiceBox setOnHidden");
System.out.println(choiceBox.getSelectionModel().getSelectedIndex());
});
choiceBox.getSelectionModel().selectedIndexProperty().addListener(e -> {
System.out.println("ChoiceBox selectedIndexProperty");
});
GridPane grid = new GridPane();
grid.setVgap(4);
grid.setHgap(10);
grid.setPadding(new Insets(5, 5, 5, 5));
grid.add(new Label("ComboBox: "), 0, 0);
grid.add(comboBox, 1, 0);
grid.add(new Label("ChoiceBox: "), 0, 1);
grid.add(choiceBox, 1, 1);
Group root = (Group)scene.getRoot();
root.getChildren().add(grid);
stage.setScene(scene);
stage.show();
}
}
ComboBox
の両方setOnShown
とsetOnShowing
方法はうまく動作しますが、ChoiceBox
コンソール出力用selectedIndexProperty
リスナーを除いて空になっています。 これは既知のバグですか? '関連するものが見つかりませんでした。それとも、コードに何か問題がありますか?
最新のJDK v1.8.0_121を使用します。
[ドキュメント](https://docs.oracle .com/javase/8/javafx/api/javafx/scene/control/ChoiceBox.html)はこれらのメソッドをリストしていませんr 'ChoiceBox'だから私はそれもコンパイルに驚いています.... – Itai
@sillyflyええ、私はOracleチームにバグを提出しました。 – Enigo