连接两个选择框或组合框

时间:2015-04-03 13:48:54

标签: combobox javafx box choice

有没有办法连接两个选择框或组合框。它并不重要。 我想更改第二个框中的项目(整数),具体取决于在第一个框架(字符串)上选择的内容。

例如:
方框一:
蛋糕
饼干

方框二:
如果是纸杯蛋糕,那么数字1,2,3,......,28,29,30 如果是饼干,那么数字1,2,3,......,27,28 否则空盒子。

数字可以通过数组输入。我遇到的问题是如何使用事件处理程序来更改第二个框中的内容 感谢。

1 个答案:

答案 0 :(得分:1)

根据您的要求,可以有不同的方法。一个可以是:

@Override
public void start( Stage stage )
{

    final Map<String, ObservableList<Integer>> map = new HashMap<>();
    map.put( "cupcakes", FXCollections.observableArrayList( 1,2,3,4,5,6));
    map.put( "cookies",  FXCollections.observableArrayList(11,12,13,14,15,16));

    final ComboBox<String> comboOne = new ComboBox<>();
    comboOne.getItems().addAll(
            "cupcakes",
            "cookies",
            "empty box"
    );
    final ComboBox<Integer> comboTwo = new ComboBox<>();

    comboOne.getSelectionModel().selectedItemProperty().addListener( new ChangeListener<String>()
    {
        @Override
        public void changed( ObservableValue<? extends String> observable, String oldValue, String newValue )
        {
            comboTwo.setItems( 
                    map.containsKey( newValue ) ? map.get( newValue ) : FXCollections.emptyObservableList()
            );
        }
    } );

    VBox grid = new VBox( 20 );
    grid.getChildren().addAll( comboOne, comboTwo );

    Scene scene = new Scene( grid, 450, 250 );
    stage.setScene( scene );
    stage.show();
}