有没有办法不断显示组合框弹出窗口?问题是关于datepicker,但它是组合框的后代。我想调用组合框的show()方法然后不断显示它直到阶段关闭。 到目前为止最好的事情是
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testing.MainActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:background="#0000ff"
android:orientation="vertical"
android:layout_weight="1" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:background="#00ffff"
android:orientation="vertical"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:orientation="vertical"
android:background="#00ff00"
android:layout_gravity="center" />
</FrameLayout>
它有点工作,但它隐藏弹出窗口然后显示它,这是不方便的。
答案 0 :(得分:2)
将弹出内容从日期选择器外观中取出,并像使用任何其他节点一样使用它。请注意,日期选择器本身必须至少渲染一次作为场景的一部分,以便初始化外观。可能有一种更聪明的方法来初始化皮肤。
final DatePicker datePicker = new DatePicker();
final StackPane root = new StackPane( datePicker );
final Scene scene = new Scene( root, 250, 200 );
primaryStage.setScene( scene );
primaryStage.show();
datePicker.setVisible( false );
datePicker.setManaged( false );
final com.sun.javafx.scene.control.skin.DatePickerSkin skin = (com.sun.javafx.scene.control.skin.DatePickerSkin) datePicker.getSkin();
root.getChildren().add( skin.getPopupContent() );
在github上完整example code。
使用专门为您的目的制作的控件,例如JFXtras的CalendarPicker。
答案 1 :(得分:0)
如果可以覆盖ComboBoxBase方法的hide()方法,则可以阻止控件关闭。您必须创建一个新类,如alwaysOpenDatePicker,并让它扩展javafx场景数据贴图类。在该类中,您可以覆盖hide()方法,在该方法中您将不执行任何操作。
我不确定这是否有用,我只是大声思考。我想这值得一试,让我知道它是否有用:)。
以及指向ComboBoxBase页面的链接: https://docs.oracle.com/javafx/2/api/javafx/scene/control/ComboBoxBase.html