java - 如何初始化 TabPane (JavaFX)

标签 java javafx

在我的 GUI 中,我尝试显示一个包含其他元素的 TabPane

当调用特定场景的初始化方法时,我可以将所需的数据添加到第一个Tab中。

如何访问第二个并在那里添加数据?`

当您在单个选项卡之间切换时是否有一个方法被调用,或者是否可以从初始化方法调用它?

//all the fields

@FXML
private void initialize() {
    smsHandynumberColumn.setCellValueFactory(cellData -> cellData.getValue().numberProperty());
    smsHandyproviderColumn.setCellValueFactory(cellData -> cellData.getValue().providerProperty());
    displayHandyDetails(null);
    smsHandyList.getSelectionModel().selectedItemProperty()
            .addListener((observable, oldValue, newValue) -> displayHandyDetails(newValue));

//  providernameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
//  provideramountColumn.setCellValueFactory(cellData -> cellData.getValue().sizeProperty());
}

@FXML
private void displayHandyDetails(SmsHandy handy) {
    if (handy != null) {
        handyNumberLabel.setText(handy.getNumber());
        providerLabel.setText(handy.getProvider().getName());
        registerLabel.setText(handy.getDate().toString());
        receivedLabel.setText(Integer.toString(handy.getReceivedList().size()));
        sentLabel.setText(Integer.toString(handy.getSentList().size()));
        if (handy instanceof PrepaidSmsHandy) {
            balanceLabel.setText(Integer.toString(handy.getProvider().getCreditForSmsHandy(handy.getNumber()))
                    + " Cent on account");
            typeLabel.setText("Prepaid");
        } else {
            balanceLabel.setText(
                    Integer.toString(((TariffPlanSmsHandy) handy).getRemainingFreeSms()) + " free SMS left");
            typeLabel.setText("Tariff-Plan");
        }
    } else {
        handyNumberLabel.setText(" ");
        providerLabel.setText(" ");
        registerLabel.setText(" ");
        typeLabel.setText(" ");
        balanceLabel.setText(" ");
        receivedLabel.setText(" ");
        sentLabel.setText(" ");
    }
}

public void setMainApp(MainApp mainApp) {
    this.mainApp = mainApp;
    smsHandyList.setItems(mainApp.getHandyList());
}

}

所以,这是 Controller 类。就这样,我可以工作了。与第一个选项卡 Pane (当您查看它时默认显示)。

FXML 文件:http://pastebin.com/MQ0C8EWD

最佳答案

首先初始化选项卡,然后初始化所有所需的选项卡。您可以设置标题和内容,但不要忘记将所有选项卡添加到 tabPane 中。

 TabPane tabPane = new TabPane();
 Tab tab1 = new Tab();
 tab.setText("tab 1");
 tab.setContent(new Rectangle(200,200, Color.LIGHTSTEELBLUE));
 Tab tab2 = new Tab();
 tab.setText("tab 2");
 tab.setContent(new Rectangle(200,200, Color.RED));
 tabPane.getTabs().addAll(tab1, tab2);

更多信息:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TabPane.html

关于java - 如何初始化 TabPane (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390413/

相关文章:

java - 更新的 Mac OS X Java 破坏了 appengine 开发服务器

新项目对话框中缺少 JavaFX FXML 应用程序。

java - 使用@UseStringTemplate3StatementLocator时,JDBI给出错误 "ORA-00900: invalid SQL statement"

java - Eclipse 导入 Maven 项目失败

java - java中可以创建多少个嵌套的 "new"对象?

css - 在 JavaFX 中为 TextFieldTableCell 创建有效性检查

java - 在命令提示符下运行 jar 文件时显示错误 "JavaFX runtime components are missing, and are required to run this application"

java - 在 JavaFX 中连接 View 和模型的主要方式是什么?

javafx fxml LoadException

java - 获取自定义注释的目标元素类型