Java 在场景中使用其他类

Java 在场景中使用其他类,java,class,user-interface,javafx,scene,Java,Class,User Interface,Javafx,Scene,伙计们,我是JavaFX新手,所以我知道这会很愚蠢(或者很容易解决),但是我在一个类中创建了一个Togglebuttons菜单,我想把它放到主菜单中 我的LeftMenu类如下所示: package application; import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.scene.control.Tooltip; import javafx.sc

伙计们,我是JavaFX新手,所以我知道这会很愚蠢(或者很容易解决),但是我在一个类中创建了一个Togglebuttons菜单,我想把它放到主菜单中

我的LeftMenu类如下所示:

package application;

import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;

public class LeftMenu extends BorderPane{

public static void main(String[] args) {
}

        public LeftMenu() {

    ToggleGroup group = new ToggleGroup();


    ToggleButton sr = new ToggleButton("SR");
    sr.setTooltip(new Tooltip("SR"));
    sr.setPrefWidth(40);
    sr.setPrefHeight(40);
    sr.setOnAction(e-> {
        if(sr.isSelected())
        System.out.println(sr.getText()  + " ON");
        else
        System.out.println(sr.getText() + " OFF");
    });


    ToggleButton mh = new ToggleButton("MH");
    mh.setTooltip(new Tooltip("MH"));
    mh.setPrefWidth(40);
    mh.setPrefHeight(40);
    mh.setOnAction(e-> {
        if(mh.isSelected())
        System.out.println(mh.getText()  + " ON");
        else
        System.out.println(mh.getText() + " OFF");
    });

    ToggleButton ssfha = new ToggleButton("SSFHA");
    ssfha.setTooltip(new Tooltip("SSFHA"));
    ssfha.setPrefWidth(40);
    ssfha.setPrefHeight(40);
    ssfha.setOnAction(e-> {
        if(ssfha.isSelected())
        System.out.println(ssfha.getText()  + " ON");
        else
        System.out.println(ssfha.getText() + " OFF");
    });

    sr.setToggleGroup(group);
    mh.setToggleGroup(group);
    ssfha.setToggleGroup(group);

    //Menu
    VBox level = new VBox();
    level.getStyleClass().addAll("vbox");
    level.getChildren().addAll(sr, mh, ssfha);

 }
}
我想把它放在这里 (我没有任何错误,所以我不知道是什么情况):


感谢您的帮助。

首先,请使用适当的布局窗格,允许您同时查看两个子节点,而不是将一个子节点置于另一个子节点之上(遮住底部节点)的堆叠窗格:

其次,您似乎没有向自定义类添加任何内容:

import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;

public class LeftMenu extends BorderPane{

    // why on earth is this here? Get rid of it:
    //public static void main(String[] args) {
    //}

    public LeftMenu() {

        ToggleGroup group = new ToggleGroup();


        ToggleButton sr = new ToggleButton("SR");
        sr.setTooltip(new Tooltip("SR"));
        sr.setPrefWidth(40);
        sr.setPrefHeight(40);
        sr.setOnAction(e-> {
            if(sr.isSelected())
            System.out.println(sr.getText()  + " ON");
            else
            System.out.println(sr.getText() + " OFF");
        });


        ToggleButton mh = new ToggleButton("MH");
        mh.setTooltip(new Tooltip("MH"));
        mh.setPrefWidth(40);
        mh.setPrefHeight(40);
        mh.setOnAction(e-> {
            if(mh.isSelected())
            System.out.println(mh.getText()  + " ON");
            else
            System.out.println(mh.getText() + " OFF");
        });

        ToggleButton ssfha = new ToggleButton("SSFHA");
        ssfha.setTooltip(new Tooltip("SSFHA"));
        ssfha.setPrefWidth(40);
        ssfha.setPrefHeight(40);
        ssfha.setOnAction(e-> {
            if(ssfha.isSelected())
            System.out.println(ssfha.getText()  + " ON");
            else
            System.out.println(ssfha.getText() + " OFF");
        });

        sr.setToggleGroup(group);
        mh.setToggleGroup(group);
        ssfha.setToggleGroup(group);

        //Menu
        VBox level = new VBox();
        level.getStyleClass().addAll("vbox");
        level.getChildren().addAll(sr, mh, ssfha);

        // add level to the center of this pane:

        setCenter(level);

    }
}

首先从自定义类中删除main方法,然后可以直接从start方法中使用stage!
// StackPane root = new StackPane();
HBox root = new HBox();
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;

public class LeftMenu extends BorderPane{

    // why on earth is this here? Get rid of it:
    //public static void main(String[] args) {
    //}

    public LeftMenu() {

        ToggleGroup group = new ToggleGroup();


        ToggleButton sr = new ToggleButton("SR");
        sr.setTooltip(new Tooltip("SR"));
        sr.setPrefWidth(40);
        sr.setPrefHeight(40);
        sr.setOnAction(e-> {
            if(sr.isSelected())
            System.out.println(sr.getText()  + " ON");
            else
            System.out.println(sr.getText() + " OFF");
        });


        ToggleButton mh = new ToggleButton("MH");
        mh.setTooltip(new Tooltip("MH"));
        mh.setPrefWidth(40);
        mh.setPrefHeight(40);
        mh.setOnAction(e-> {
            if(mh.isSelected())
            System.out.println(mh.getText()  + " ON");
            else
            System.out.println(mh.getText() + " OFF");
        });

        ToggleButton ssfha = new ToggleButton("SSFHA");
        ssfha.setTooltip(new Tooltip("SSFHA"));
        ssfha.setPrefWidth(40);
        ssfha.setPrefHeight(40);
        ssfha.setOnAction(e-> {
            if(ssfha.isSelected())
            System.out.println(ssfha.getText()  + " ON");
            else
            System.out.println(ssfha.getText() + " OFF");
        });

        sr.setToggleGroup(group);
        mh.setToggleGroup(group);
        ssfha.setToggleGroup(group);

        //Menu
        VBox level = new VBox();
        level.getStyleClass().addAll("vbox");
        level.getChildren().addAll(sr, mh, ssfha);

        // add level to the center of this pane:

        setCenter(level);

    }
}