2017-07-26 4 views
2

Ce code ne permettra pas à la ligne de dessiner dans ma fenêtre ... Tout ce que j'ai dans le fichier fxml est un simple panneau avec le fx: id de salut pour tester les choses. Il n'y a pas d'erreur, la ligne n'apparaît tout simplement pas. J'ai aussi essayé ceci avec une boîte et un cercle. J'ai vraiment besoin d'aide, c'est un projet important.pane.getChildren(). AddAll(); ne fonctionne pas dans une scène javafx

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.layout.AnchorPane; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.Pane; 
import javafx.scene.shape.Line; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 

public class PlotSceneController implements Initializable { 

    @FXML 
    Pane hi; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

    Line line = new Line(0,0,10,110); 
     line.setStroke(Color.BLACK); 
     line.setStrokeWidth(10); 
     hi.getChildren().addAll(line); 

    } 

} 

FXML Fichier

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.shape.*?> 
<?import java.lang.*?> 
<?import java.net.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 


<Pane fx:id="hi" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="- 
Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" 
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 
<children> 

</children> 
</Pane> 

classe principale, conduit à une autre page avec un bouton qui mène à la page que je vais avoir du mal avec.

public class Main extends Application { 

Stage firstStage; 
Scene loginButton; 

@Override 
public void start(Stage primaryStage) throws Exception {    

    Parent root = FXMLLoader.load(getClass().getResource("Main.fxml")); 
    firstStage = primaryStage;     
    loginButton = new Scene(root, 900, 700);  

    primaryStage.setTitle("Treatment Data");    
    primaryStage.setScene(loginButton);   
    primaryStage.show();       
} 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) {  //Main class 
    launch(args);      //Launches application/window 
} 

}

+0

Postez le reste de l'application (la Fichier FXML et classe d'application). Avez-vous des erreurs lorsque vous l'exécutez? –

+0

@James_D Mise à jour pour inclure plus d'informations sur mon problème et plus de code. –

Répondre

5

Vous avez manqué de définir une classe de contrôleur PlotSceneController.java. Définissez la classe du contrôleur de manière différente, par exemple en utilisant la méthode setController() de la classe principale ou en définissant la classe du contrôleur dans le volet du contrôleur latéral inférieur gauche de l'écran du générateur de scènes.

Emploi des

FXMLLoader loader = new FXMLLoader(getClass().getResource("Main.fxml")); 
loader.setController(new PlotSceneController()); 
Parent root = (Parent) loader.load(); 

ou à l'aide FXML

Set classe Controller avec le chemin de package complet comme ci-dessous manière

enter image description here

+0

C'est si ridiculement simple, je ne peux pas croire que j'ai raté ça. Merci beaucoup! –