我有一个窗口,底部有一个组合框。当我点击它时,并非所有选项都可见,因为它们不再位于屏幕区域内。如何让下拉列表向上显示而不是向下显示?
我在SceneBuilder中定义了ComboBox。我用这种方式在我的代码中定义它: @FXML ComboBox fontsComboBox;
在我分配给该窗口的控制器的initialize()方法中,我设置了一些属性:
fontComboBox.setVisibleRowCount(3);
fontComboBox.getItems().addAll(fontList);
fontComboBox.setValue(fontList[0]);
我很确定我需要在这里添加一些内容才能使下拉列表显示出来。
谢谢, 谢尔班
答案 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);
}
}