gpt4 book ai didi

java - 如何使用 JavaFX 从 TabPane 中实际隐藏 Tab

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:21 33 4
gpt4 key购买 nike

以前我在 Java Swing 上工作,现在我正在尝试使用 JavaFX。我上次的 Java Swing 代码:

//These line of code is to call method that declared in ContentPage.java
contentPage.adminFeatureEnabled(adminEnabled);
contentPage.managerFeatureEnabled(managerEnabled);

在我的 ContentPage.java 中

//By default, all feature (or tab) are enabled.
//This method is to remove register account if the user login into the system is manager and staff
public void adminFeatureEnabled(boolean a) {
if (!a) {
tabPane.removeTabAt(tabPane.indexOfComponent(registerAccount));
}
}
//This method is to remove register account and purchase order if the user who log into the system is staff
public void managerFeatureEnabled(boolean a) {
if(!a) {
tabPane.removeTabAt(tabPane.indexOfComponent(purchaseOrder));
}
}

在我的代码中:

if (role.equals("admin")){
contentPage.contentFrame.setTitle("Menu - Admin!");
contentPage.disUser.setEditable(true);
contentPage.chgRoles.setEnabled(true);
} else if(role.equals("manager")){
contentPage.contentFrame.setTitle("Menu - Manager!");
contentPage.chgRoles.setSelectedItem("manager");
adminEnabled = false;
}else if (role.equals("staff")){
contentPage.contentFrame.setTitle("Menu - Staff!");
contentPage.chgRoles.setSelectedItem("staff");
adminEnabled = false;
managerEnabled = false;
}

上面的代码会这样执行:

  1. 当用户使用管理员帐户登录时,启用所有功能(Tab)
  2. 当用户以管理员身份登录时,某些功能(标签)将被隐藏

我现在的问题:
我想要在 JavaFX 中使用与上面相同的功能,但我不知道如何使用这些方法,因为没有一种方法能按我的要求工作。

谁能帮我解决这个问题?

最佳答案

简单修改tabs列表:

CheckBox 被(未)选中时,以下示例添加/删除 Tab

@Override
public void start(Stage primaryStage) {
Tab tab1 = new Tab("Tab 1", new Label("1"));
Tab tab2 = new Tab("Tab 2", new Label("2"));

TabPane tabPane = new TabPane();
tabPane.setPrefSize(400, 400);

CheckBox cb1 = new CheckBox("1");
CheckBox cb2 = new CheckBox("2");
cb1.selectedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
tabPane.getTabs().add(0, tab1);
} else {
tabPane.getTabs().remove(tab1);
}
});
cb2.selectedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
tabPane.getTabs().add(tab2);
} else {
tabPane.getTabs().remove(tab2);
}
});

Scene scene = new Scene(new VBox(new HBox(cb1, cb2), tabPane));

primaryStage.setScene(scene);
primaryStage.show();
}

关于java - 如何使用 JavaFX 从 TabPane 中实际隐藏 Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789563/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com