2015-04-03 47 views
1

是否有连接两个选择框或组合框的方法?这并不重要。 我想要更改方框2(整数)中的项目,具体取决于方框1(字符串)上选择的内容。连接两个选择框或组合框

例如:
箱一个:
蛋糕
饼干

盒二:
如果蛋糕,那么数字1,2,3,...,28,29,30。
如果是cookies,那么数字1,2,3,....,27,28。
其他空箱子。

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

+0

您是否具有确定性功能,将Box 1的内容映射到Box 2的内容? – ItachiUchiha 2015-04-03 14:05:25

+0

你有你试过的代码吗? – Alupotha 2015-04-03 14:16:57

+0

不知道我明白你的意思,但我所尝试的是通过使用if/else来更改Box 2的项目,但是它不成功。 – spacedout 2015-04-03 14:25:11

回答

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