Javafx使组合框向上扩展

时间:2015-06-24 18:28:03

标签: javafx

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

我在SceneBuilder中定义了ComboBox。我用这种方式在我的代码中定义它: @FXML ComboBox fontsComboBox;

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

    fontComboBox.setVisibleRowCount(3);
    fontComboBox.getItems().addAll(fontList);
    fontComboBox.setValue(fontList[0]);

我很确定我需要在这里添加一些内容才能使下拉列表显示出来。

谢谢, 谢尔班

1 个答案:

答案 0 :(得分:3)

这是一个已知的bug,直到Java 8u45。它在Java 8u60中修复。

您可以在此处下载JDK / JRE 8u60ea(早期访问)以试一试:https://jdk8.java.net/download.html

Java 8 Update 60将于2015年8月安排GA。

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

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);
  }
}

Java 8 Update 45行为

Wrong ComboBox

Java 8 Update 60 ea行为

Correct ComboBox