2017-07-29 10 views
1

JavaFXベースのDiscord Botを作成すると、コマンドを聞くことができるギルドを選択でき、Botが接続されているサーバーの数だけToggleButtonを作成できます。ここで は私の方法である:JavaFX ToggleButtonは表示されませんが、子として登録されています

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を使用していますが、JavaFX用のカスタムライブラリ「Jfoenix 」を使用しています。「generateButtons」メソッドは、Discord Botがオンラインになるとすぐに実行されます。

答えて

1

実際には作成した新しいVBoxは表示されません。

シーンをFXMLLoaderで読み込むと、シーンの内容がすべて作成され、読み込まれたオブジェクトに参照が提供されます。新しいFXMLコードを作成するのではなく、FXMLコードで指定したVBoxを使用します。

サンプルコードの3行目を削除できます。これは実行する必要があります。

discordVBox = new VBox(); // <- don't need this, there is already an VBox instantiated 
+0

ありがとう、私は数日間この問題を抱えていました! – SmooK

+0

問題はありません。うれしく思っています。 – Eric

+0

@SmooKこの回答には正しいとマークする必要があります。 –

関連する問題