共通のListViewではなく、ポップアップ内にカスタムNodeオブジェクトを持つComboBoxを書きたいと思っています。 ColorPickerとDatePickerは良い例です。これはComboBoxBaseの他の2つの実装です。私はComboBoxBaseも簡単に拡張できると思っていましたが、popupPropertyやpopupFactoryがないため、コンテンツを設定する方法がわかりません。それ以外はどうしたらいいのですか?または、ColorPickerとDatePickerがこれをどのようにしていますか?カスタムポップアップを使用したJavaFX ComboBoxの作成
答えて
ComboBoxPopupControl
ComboBoxBaseSkin
には、getPopupContent()
が含まれています。それはあなたが探している方法です。 ComboBoxSkinsの1を拡張し、独自の肌の実装では、あなたが好きなポップアップコンテンツを返すことができます私はこのようなcommboxのポップアップを置き換えるためにComtextMenu
を使用
public class CustomComboBox<T> extends ComboBox<T> {
@Override
protected Skin<?> createDefaultSkin() {
return new CustomComboBoxSkin<>(this);
}
}
public class CustomComboBoxSkin<T> extends ComboBoxPopupControl<T> {
public CustomComboBoxSkin(ComboBox<T> comboBox) {
super(comboBox, new CustomComboBoxBehaviour<>(comboBox));
}
@Override
public Node getPopupContent() {
return new Rectangle(150, 200);
}
// inherited methods ...
}
しかし、なぜあなたは「推奨しない」と言っていますか?リストビューをどのように交換すればいいですか? TableView、TreeViewまたは何か完全に他の? – Arceus
今後のリリースでクラスが変更される可能性があるため、プライベートAPIを使用することはお勧めできません。 http://stackoverflow.com/questions/16874310/need-clarification-of-what-is-this-public-api-in-javafx 'ComboBox'を拡張したいのであれば、他の選択肢はありません。しかし、とにかくリストビューの動作が必要ない場合は、独自のカスタムコントロールを構築するオプションかもしれません – jns
Java 9のスキンAPIを公開しました。だから今ComboBoxPopupControlを拡張すると、良いと有効な可能性があります。 – Arceus
(それはプライベートAPIを使用することをお勧めしませんが):
ContextMenu menu = new ContextMenu();
MenuItem item = new MenuItem();
item.setGraphic(new Lable("test"));
menu.getItems.add(item);
commbox.setContextMenu(null);
commbox.setContextMenu(menu);
commbox.getContextMenu().show(comboBox, Side.BOTTOM, 0, 0);
正常に動作します。
- 1. JavaFxを使用したPDFデザインの作成
- 2. Ionic Appでカスタムポップアップを作成する
- 3. JavaFX Comboboxリストスタイリング
- 4. JavaFX ComboBox CSSスタイル
- 5. JavaFX ComboBox readFromFile
- 6. JavaFx comboBox JFoenix css
- 7. JavaFX ComboBoxを使用してTableViewにデータを取り込む
- 8. 遅延で動作するJavaFX ComboBox
- 9. 設定リスナーCombobox JavaFX
- 10. JAVAFX ComboBoxが空白
- 11. 剣道スケジューラーでブートストラップモーダルを使用したカスタムポップアップ
- 12. バイトを含むJavaFX ComboBox
- 13. JavaFX ComboBox keyeventのTextFieldコンテンツ
- 14. JavaFX - ComboBoxでChangeListenerを使用して複数のArrayListを持つ2番目のComboBoxを設定する
- 15. ComboBoxを使用したデータベースの選択
- 16. ComboBoxを使用したDataGridのフィルタリング
- 17. クリックイベントなしでカスタムポップアップを作成するには?ここ
- 18. JavaFX - ComboBoxでChangeListenerを使用して別のComboBoxをArrayListに設定すると、ArrayListが空になる
- 19. JavaFx ComboBoxはドロップダウンメニューをカスタマイズします
- 20. JavaFX Combobox:入力用に押されたキーを処理する
- 21. JavaFXを使用したランダムブロック
- 22. grailsのselect(combobox)用のタグライブラリの使い方と作成方法
- 23. ImageViewを使用してJavafxイメージスライダを作成する方法
- 24. FXMLを使用してJavaFXでCheckBoxTreeItemを作成する方法
- 25. JavaFXを使用してポップアップボックスを作成する方法
- 26. javafxを使用してAndroidでプッシュ通知を作成
- 27. JavaFXで異なるテクスチャを使用してキューブを作成
- 28. eclipseを使用してjavafxでムービープレーヤーを作成する
- 29. フレームとCombobox MVVMを使用したナビゲーション
- 30. Comboboxを使用したC#Wpf図面
「com.sun.javafx.scene.control.skin.ComboBoxListViewSkin」+スーパークラスを見てください。それらはポップアップの外観を担当するクラスです(使用されているスキンを見つけるために 'Node'のソースコード内の' createDefaultSkin'を探してください) – fabian
人がまだ同じ問題に遭遇した場合、スレッドを動作するコードスニペットで表示します。https://stackoverflow.com/questions/48622453/javafx-create-popover-without-external-libraries –