JavaFX ComboBoxのセルのカスタマイズ方法


  1. テキストのカスタマイズ: ComboBoxのセルに表示されるテキストをカスタマイズするには、セルファクトリ(CellFactory)を使用します。セルファクトリは、セルを作成するためのコールバック関数です。次のコード例は、セルのテキストを大文字に変換する例です。
comboBox.setCellFactory(param -> new ListCell<String>() {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (empty || item == null) {
            setText(null);
        } else {
            setText(item.toUpperCase());
        }
    }
});
  1. グラフィックのカスタマイズ: ComboBoxのセルに表示されるグラフィックをカスタマイズするには、同様にセルファクトリを使用します。次のコード例は、セルにアイコンを表示する例です。
comboBox.setCellFactory(param -> new ListCell<String>() {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (empty || item == null) {
            setText(null);
            setGraphic(null);
        } else {
            setText(item);
            setGraphic(new ImageView("icon.png"));
        }
    }
});
  1. イベントハンドリング: ComboBoxのセルにイベントハンドラを追加することもできます。次のコード例は、セルがクリックされたときにアラートダイアログを表示する例です。
comboBox.setCellFactory(param -> new ListCell<String>() {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (empty || item == null) {
            setText(null);
        } else {
            setText(item);
        }
    }
    @Override
    public void startEdit() {
        super.startEdit();
        // セルがクリックされたときの処理
        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setContentText("セルがクリックされました: " + getItem());
        alert.showAndWait();
    }
});

以上が、JavaFXのComboBoxのセルをカスタマイズする方法といくつかのコード例です。これらの例を参考にして、自分のニーズに合ったカスタマイズを行ってみてください。