Javafx使组合框向上扩展

Javafx使组合框向上扩展,javafx,Javafx,我有一个窗口,底部有一个组合框。当我点击它时,并不是所有的选项都可见,因为它们不再位于屏幕区域内。如何使下拉列表向上显示而不是向下显示 我在SceneBuilder中定义了组合框。我在我的代码中这样定义它: @FXML 组合框fontsComboBox 在分配给该窗口的控制器的initialize()方法中,我设置了一些属性: fontComboBox.setVisibleRowCount(3); fontComboBox.getItems().addAll(fontList);

我有一个窗口,底部有一个组合框。当我点击它时,并不是所有的选项都可见,因为它们不再位于屏幕区域内。如何使下拉列表向上显示而不是向下显示

我在SceneBuilder中定义了组合框。我在我的代码中这样定义它: @FXML 组合框fontsComboBox

在分配给该窗口的控制器的initialize()方法中,我设置了一些属性:

    fontComboBox.setVisibleRowCount(3);
    fontComboBox.getItems().addAll(fontList);
    fontComboBox.setValue(fontList[0]);
我很确定我需要在这里添加一些东西,以便使下拉列表向上

谢谢,
塞尔维亚人

在Java8U45之前,这是一个已知的bug。它在Java8U60中是固定的

  • (固定在8u60中)
您可以在此处下载JDK/JRE 8u60ea(早期访问)进行尝试:

Java 8 Update 60计划于2015年8月发布

这个例子说明了这个问题。只需打开组合框,即使您将窗口向下移动到屏幕,它也不会显示框上方的列表

import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ComboBoxTester extends Application {

  @Override
  public void start(Stage primaryStage) {

    List<Integer> values = new ArrayList<>();
    for (int i = 1; i < 100; i++) {
      values.add(i);
    }
    ObservableList<Integer> items = FXCollections.observableArrayList(values);
    ComboBox<Integer> comboBox = new ComboBox<>(items);
    comboBox.getSelectionModel().clearAndSelect(0);
    comboBox.setVisibleRowCount(5);

    BorderPane root = new BorderPane();
    root.setBottom(comboBox);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  public static void main(String[] args) {
    launch(args);
  }
}
import java.util.ArrayList;
导入java.util.List;
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类ComboBoxTester扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
列表值=新的ArrayList();
对于(int i=1;i<100;i++){
增加(i);
}
ObservableList items=FXCollections.observableArrayList(值);
ComboBox ComboBox=新的ComboBox(项目);
comboBox.getSelectionModel().clearAndSelect(0);
comboBox.setVisibleRowCount(5);
BorderPane根=新的BorderPane();
root.setBottom(组合框);
场景=新场景(根,300,250);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
Java8更新45行为

Java8Update60EA行为

谢谢。这正是我想要的