有没有办法连接两个选择框或组合框。它并不重要。 我想更改第二个框中的项目(整数),具体取决于在第一个框架(字符串)上选择的内容。
例如:
方框一:
蛋糕
饼干
方框二:
如果是纸杯蛋糕,那么数字1,2,3,......,28,29,30
如果是饼干,那么数字1,2,3,......,27,28
否则空盒子。
数字可以通过数组输入。我遇到的问题是如何使用事件处理程序来更改第二个框中的内容 感谢。
答案 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();
}