2015-02-07 5 views
1

이 자바 여기왜 내 자바 FX 단계는

import javafx.application.Platform; 
import javafx.embed.swing.JFXPanel; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.stage.Stage; 

public class mains extends Stage { 

public static void main(String[] args) { 
    new JFXPanel(); 
    Platform.runLater(new Runnable(){ 

     @Override 
     public void run() { 
      new mains(); 
     } 

    }); 
} 
void go(){ 
    new JFXPanel(); 
    new mains().show(); 
} 

public mains() { 
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(
      "LOL.fxml")); 
    fxmlLoader.setRoot(this); 
    fxmlLoader.setController(this); 

    try { 
     fxmlLoader.load(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@FXML 
private Button button; 

@FXML 
private Label label; 

@FXML 
void push(ActionEvent event) { 

} 

} 

에게 있습니다 그것이 루트가 이미 지정 말한다 나는로드 예외를 얻을 fxml http://pastebin.com/uzBrMRDV 입니다로드 할 수 없습니다. 내가 setRoot (this)를 제거하면; 그것은 이 라인

fxmlLoader.setRoot(this);

귀하의 FXML의 정의를 제거 컨트롤러 자체

답변

5

에서 무대처럼 FXML 파일을로드 할 수 어쨌든 있나요 ... 내가 JFX 정말 좌절 점점 오전 모든 에 부하를 나던 루트는 AnchorPane이어야합니다 (루트를 두 번 설정할 수 없으므로 오류가 발생합니다).

현재의 클래스는 Stage, 그리고 FXMLLoader 부하가 AnchorPane, 당신이 Scene에로드 AnchorPane를 넣고 단계에서 장면을 설정해야하기 때문에. 나는 당신에게 사람을 사랑

AnchorPane root = fxmlLoader.load(); 
Scene scene = new Scene(root); // optionally specify dimensions too 
this.setScene(scene); 
+0

fxmlLoader.load(); 

감사를 교체! –

+0

감사합니다. – swapyonubuntu