1

我正在创建一个基于 JavaFX 的 Discord Bot,您可以在其中选择允许哪些公会收听命令,它会创建与 Bot 连接的服务器数量一样多的 ToggleButtons。这是我的方法:

public void generateButtons() {
    int y = 14;
    discordVBox = new VBox();
    JFXToggleButton tglBtn;
    discordVBox.setSpacing(30);
    for (final Guild g : DiscordBot.jda.getGuilds()) {
        if (g == null || g.getTextChannels().isEmpty() || !DiscordBot.isDiscordBotOnline()) {
            PrintConsole.printError("Error creating Toggle Buttons.");
            return;
        } else {
            tglBtn = new JFXToggleButton();
            tglBtn.setText(g.getName());
            tglBtn.setStyle("-jfx-toggle-color: #d35400;");
            tglBtn.setLayoutX(14);
            tglBtn.setLayoutY(y);
            tglBtn.setPrefHeight(56);
            tglBtn.setPrefWidth(141);
            discordVBox.getChildren().add(tglBtn);
            y += 63;
            System.out.println("DISABLED: " + tglBtn.isDisabled());
            System.out.println("VISIBLE: " + tglBtn.isVisible());
            System.out.println("PARENT: " + tglBtn.getParent());
            tglBtn.setVisible(true);
        }
    }
    System.out.println("VBOX PARENT: " + discordVBox.getParent());
    System.out.println("VBOX CHILDREN: " + discordVBox.getChildren());
}

忽略所有输出,我试图调试所有输出,每个代码看起来都很好,但肉眼看不到。场景本身主要是通过 FXML 并且我使用名为 Jfoenix 的 JavaFX 自定义库 一旦 Discord Bot 上线,就会执行方法“generateButtons”。

4

1 回答 1

1

实际上,您创建的 NEW VBox 是不可见的。

如果您使用 FXMLLoader 加载场景,则会为您创建所有场景内容,并为加载的对象提供参考。使用您在 FXML 代码中指定的 VBox,而不是创建新的 VBox。

您可以删除示例代码的第 3 行,这应该会运行。

discordVBox = new VBox(); // <- don't need this, there is already an VBox instantiated
于 2017-07-29T02:03:49.300 回答