我有一个带有三个组合框的界面。每个组合框都显示对象的属性,并根据情况按字母顺序或数字顺序排序。当我从组合框中选择一个项目(属性)时,其他两个应选择与该对象相对应的项目(属性)。
我找不到有关它的文档,也没有关于如何执行操作的任何线索。我只找到有关嵌套组合框的信息,但事实并非如此。
希望您能理解。
在此示例中,我已向一个组合框添加了一个侦听器。在该组合框中选择一个值后,第二个组合框将进行自我调整以具有相应的值。您可以采用相同的逻辑并将其应用于3种方式。如果您有任何疑问,请告诉我!
package example;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
// Start the javafx application
@Override
public void start(Stage stage) {
ComboBox<String> combo = new ComboBox<String>();
combo.getItems().add("1");
combo.getItems().add("2");
combo.getItems().add("3");
combo.getSelectionModel().select(0); // value index to select
ComboBox<String> combo2 = new ComboBox<String>();
combo2.getItems().add("10");
combo2.getItems().add("20");
combo2.getItems().add("30");
combo2.getSelectionModel().select(0); // value index to select
combo.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue ov, String oldVal, String newVal) {
if (newVal.equals("1"))
if (combo2.getSelectionModel().getSelectedIndex() != 0)
combo2.getSelectionModel().select(0); // value index to select
if (newVal.equals("2"))
if (combo2.getSelectionModel().getSelectedIndex() != 1)
combo2.getSelectionModel().select(1);
if (newVal.equals("3"))
if (combo2.getSelectionModel().getSelectedIndex() != 2)
combo2.getSelectionModel().select(2);
}
});
VBox wall = new VBox(5);
wall.getChildren().addAll(combo, combo2);
Scene scene = new Scene(wall, 200, 200);
stage.setScene(scene);
stage.show();
}
}