JavaFX ToggleButton 不可见但已注册为 Children
JavaFX ToggleButton is not visible but registered as Children
我正在创建一个基于 JavaFX 的 Discord Bot,您可以在其中选择允许哪些公会听命令,它会创建与 Bot 连接的服务器数量一样多的切换按钮。
这是我的方法:
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" 就会被执行。
实际上是您创建的新 VBox 不可见。
如果您使用 FXMLLoader 加载场景,所有场景内容都会为您创建,并且会提供对加载对象的引用。使用您通过 FXML 代码指定的 VBox 而不是创建新的 VBox。
您可以删除示例代码的第 3 行,这应该 运行。
discordVBox = new VBox(); // <- don't need this, there is already an VBox instantiated
我正在创建一个基于 JavaFX 的 Discord Bot,您可以在其中选择允许哪些公会听命令,它会创建与 Bot 连接的服务器数量一样多的切换按钮。 这是我的方法:
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" 就会被执行。
实际上是您创建的新 VBox 不可见。
如果您使用 FXMLLoader 加载场景,所有场景内容都会为您创建,并且会提供对加载对象的引用。使用您通过 FXML 代码指定的 VBox 而不是创建新的 VBox。
您可以删除示例代码的第 3 行,这应该 运行。
discordVBox = new VBox(); // <- don't need this, there is already an VBox instantiated