2017-01-08 2 views
0

les gars, je suis nouveau dans JavaFX, donc je sais que cela va être stupide (ou facile à résoudre), mais j'ai créé un menu Togglebuttons dans une classe, que je voudrais mettre à la Principale.Utilisation d'autres classes dans la scène

classe Mon LeftMenu ressemble à ceci:

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); 

} 
} 

Et je voudrais le mettre ici (je ne dois d'erreurs, donc je ne sais pas ce qui est le cas):

package application; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 


public class Main extends Application { 

Stage window; 

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

@Override 
public void start(Stage primaryStage) throws Exception{ 
    { 
     Stage window = primaryStage; 
     window.setTitle("Menu Test"); 
     window.setMaximized(true); 

     StackPane root = new StackPane(); 

     BorderPane lMenu = new LeftMenu();   
     BorderPane rightPane = new BorderPane(); 

     root.getChildren().addAll(lMenu,rightPane); 

     Scene scene = new Scene(root); 
     scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
     window.setScene(scene); 
     window.show(); 

    } 
} 
} 

Merci de votre aide.

+0

supprimez d'abord la méthode principale de votre classe personnalisée, et vous pouvez utiliser la scène directement depuis la méthode de démarrage! –

Répondre

0

Tout d'abord, utilisez un volet de mise en page appropriée qui vous permet de voir les deux nœuds enfants à la fois, au lieu d'un StackPane qui place l'un sur l'autre (occultant celui du bas):

// StackPane root = new StackPane(); 
HBox root = new HBox(); 

En second lieu, vous ne semblez pas ajouter de contenu à votre classe personnalisée:

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); 

    } 
}