2014-12-29 4 views
0

MenuItem에서 장면을 가져 오는 방법은 무엇입니까? 나는이 코드를 시도 :MenuItem에서 장면 가져 오기

public class MainController implements Initializable { 
@FXML 
private MenuBar menuBar; 

/** 
* Initializes the controller class. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
}  

@FXML 
public void show(ActionEvent event) throws IOException{ 
Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml")); 
Scene scene = new Scene(root); 
Stage stage = new Stage(); 
stage.initModality(Modality.APPLICATION_MODAL); 
stage.initOwner(menuBar.getScene().getWindow()); 
stage.show(); 
} 

} 위의 코드는 오류를 생성하지 않습니다

을, 그러나 창을 표시하지 않습니다!

+0

예외의 Stacktrace가 가리키는 곳 또는 다른 곳에서 코드를 게시하십시오. 실제 주조가 일어나는 곳의 코드를 게시하십시오 .. – eckig

+2

root.getSene(). getWindow 대신 root를 사용하도록 변경할 수 있습니다.() –

+0

@ MangO_O MenuItem이 Node의 하위 클래스가 아니기 때문에 오류가 사라졌지 만 MenuItem에서 장면을 가져올 수 없습니다!,? 내가 무엇을 할 수 있을지? – Kachna

답변

1

컨트롤러 클래스에서 getters 및 setter를 사용하여 Scene에 대한 변수를 추가하십시오. 은 그럼 당신은 같은 것을 할 수 있습니다

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

    FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/fxml")); 
    Parent root = loader.load(); 
    MainController mainControls = loader.getController(); 

    Scene scene = new Scene(root, 300, 250); 
    mainControls.setScene(scene); 

    primaryStage.setTitle("Hello World!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

이제 장면이 그 클래스의 모든 항목을 사용할 수 있습니다.

대화 상자를 만드는 것처럼 보입니까? 메인 씬을 사용하지 않는다면 ... 새 스테이지를 만들고 그 내용으로 표시하십시오 ...
JDK는 이제 대화 상자 지원과 함께 제공됩니다.

+0

이 라인을 추가하는 것을 잊어 버렸습니다 : stage.setScene (scene); 감사 – Kachna

관련 문제