java - 选择 JFXCombobox 项目并发送到新的 Combobox

标签 java javafx lambda java-8 jfoenix

我将 JFoenix 库用于我的组合框。

'boxLeague.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> boxTeams.setItems(listPremierLeague));' 将放置当从 boxLeague 组合框中选择任何内容时,所有文本到 boxTeams 组合框,但我想要做的是,当在 boxLeague 中选择特定项目时,然后填充另一个组合框。

public class Controller implements Initializable {

@FXML
private JFXComboBox<String> boxLeague;

@FXML
private JFXComboBox<String> boxTeams;

@FXML
private JFXComboBox<String> boxPlayers;


ObservableList<String> listLeagues = FXCollections.observableArrayList(
        "Bundesliga", "La Liga", "Ligue 1", "Premier League", "Serie A", "Champions League", "Europa League");

ObservableList<String> listPremierLeague = FXCollections.observableArrayList(
        "Arsenal", "Bournemouth", "Brighton", "Burnley", "Chelsea", "Crystal Palace", "Everton");




@Override
public void initialize(URL location, ResourceBundle resources) {

    boxLeague.setItems(listLeagues);
    boxLeague.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> boxTeams.setItems(listPremierLeague));
}

最佳答案

在您的监听器内部,您需要找出选择了哪个联赛,并相应地设置 boxTeams 的项目。

boxLeague.getSelectionModel().selectedItemProperty().addListener(
  (observable, oldValue, newValue) -> { 
      if (newValue.equals("Premier League")) {
          boxTeams.setItems(listPremierLeague));
      } // else if ... (or use a switch-case here)
  }
);

请注意,如果您不为联赛和球队使用 String,而是创建您自己的类,这可能会得到进一步改进。

关于java - 选择 JFXCombobox 项目并发送到新的 Combobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48709591/

相关文章:

java - Java telnet连接以请求新的tor身份

java - 通过选择更新 JLabel 图像,动态

JavaFX - 即使有任务,不确定的进度条也不会移动

javafx - 将图形设置为标签

c# - 使用 lambda 表达式检查文件路径是否有效 C#

c# - linq to 实体,where in where 子句? (里面的地方)

Java使用java函数表达式抽象出通用代码

java - 如何以可执行格式(Java、eclipse)导出我的程序?

java - 正则表达式从多行匹配到字符串缓冲区末尾并替换为 ""

JavaFX 图表 - Java.lang.IllegalArgumentException : Duplicate series added