2017-07-27 128 views
-1

我不知道出了什麼問題,我只知道我在學習JavaFX,而我的程序突然停止工作。如果有幫助,我當時正在使用NetBeans。對不起,如果這是一個簡單的解決方案的愚蠢問題,但我完全不知道哪裏出了問題,並且從字面上看,只有2天的使用Java的經驗。需要幫助解決JavaFX問題。 (我對Java相當陌生)

輸入:

package javafx.testing; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class JavaFXTesting extends Application { 

    //main 
    blic static void main(String[] args) { 

     launch(args); 

    } 

    @Override 
    public void start(Stage primaryStage) { 

     primaryStage.show(); //shows the window 
     primaryStage.setScene(helloworldscene); 
     primaryStage.setTitle("JavaFX Testing"); //sets the window title 

     Scene helloworldscene = new Scene(root, 500, 300); //creates a new scene 

     Button helloworldbutton = new Button("Hello World"); //creates the button and gives it a display name 
     helloworldbutton.setOnAction(e -> System.out.println("Hello World")); //prints "Hello World" 

     StackPane root = new StackPane(); //no idea what the hell this one does 
     root.getChildren().add(helloworldbutton); 


    } 

} 

輸出:

ant -f "C:\\Users\\andym\\Documents\\NetBeansProjects\\JavaFX Testing" jfxsa-run 
init: 
Deleting: C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\build\built-jar.properties 
deps-jar: 
Updating property file: C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\build\built-jar.properties 
Compiling 1 source file to C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\build\classes 
C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\src\javafx\testing\JavaFXTesting.java:67: error: cannot find symbol 
     primaryStage.setScene(helloworldscene); 
    symbol: variable helloworldscene 
    location: class JavaFXTesting 
C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\src\javafx\testing\JavaFXTesting.java:70: error: cannot find symbol 
     Scene helloworldscene = new Scene(root, 500, 300); //creates a new scene 
    symbol: variable root 
    location: class JavaFXTesting 
2 errors 
C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\nbproject\build-impl.xml:931: The following error occurred while executing this line: 
C:\Users\andym\Documents\NetBeansProjects\JavaFX Testing\nbproject\build-impl.xml:271: Compile failed; see the compiler error output for details. 
BUILD FAILED (total time: 0 seconds) 
+0

大家都已經知道你需要幫助,你沒有提到它的稱號。修改您的標題以反映您詢問的實際問題。請閱讀[我如何問一個好問題?](https://stackoverflow.com/help/how-to-ask) –

+0

你有沒有更新你的Java操作系統安裝或Netbeans的Java版本的機會?看起來你已經失去了javafx庫。 – Serge

+0

請告訴我們你的程序應該做什麼以及成功的輸出是什麼。 – Rominus

回答

0

你得到編譯器錯誤未定義的變量。 在實際聲明它們之前,您正在使用變量。在你的代碼中,它們是在你嘗試使用它們之後定義的。

primaryStage.setScene(helloworldscene); 
... 
Scene helloworldscene = new Scene(root, 500, 300); 

應該

Scene helloworldscene = new Scene(root, 500, 300); 
primaryStage.setScene(helloworldscene); 

root可變

+0

謝謝,我不認爲訂單實際上是那麼重要的哈哈。 –

+0

沒問題!如果這解決了您的問題,您應該將答案標記爲已接受 – acourchesne

1

問題同樣的事情,你用root你宣佈之前並對其進行初始化

public void start(Stage primaryStage) { 
     ... 
     Scene helloworldscene = new Scene(root, 500, 300); //error : root not defined 
     ... 
     StackPane root = new StackPane(); 
     root.getChildren().add(helloworldbutton); 
    } 

所以,你應該怎麼做什麼?首先需要聲明的根目錄,然後創建您的場景,然後展現的舞臺

這樣的:

@Override 
public void start(Stage primaryStage) { 

    //1 - create the root 
    StackPane root = new StackPane(); 
    //2 - add nodes to the root 
    Button helloworldbutton = new Button("Hello World"); 
    root.getChildren().add(helloworldbutton); 
    helloworldbutton.setOnAction(e -> System.out.println("Hello World")); 
    //4 - create the scene with the root 
    Scene helloworldscene = new Scene(root, 500, 300); 
    //5 - finally set the scene to the stage and show it 
    primaryStage.setScene(helloworldscene); 
    primaryStage.setTitle("JavaFX Testing"); 
    primaryStage.show(); 

}