0
장면의 크기 (응용 프로그램의 윈도우)의 크기가 조절되면 그에 따라 윈도우의 내용의 크기를 조정하려고합니다. 나는 지금fxml 로더에서 fxml 컨트롤러의 메서드에 액세스
로더 클래스
public class ResizingButtons extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
scene.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
try{
System.out.println("Scene Width Property is " + scene.getWidth());
}
catch(Exception e){
System.out.println("Error in width listener of scene" +e.getMessage());
}
}
});
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
까지했던 내 코드를 게시 한 그리고 이것은 FXMLDocument.fxml의 fxml 클래스
public class FXMLDocumentController implements Initializable {
@FXML
public Button btn1;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
public void changeBtnSize(){
btn1.setPrefHeight(200);
btn1.setStyle("-fx-background-color:red");
}
}
의 컨트롤러 인 경우 윈도우의 크기 컨트롤러 클래스의 changeBtnSize() 메서드에 액세스하려고합니다.
내가 changeListener입니다() 로더 클래스의 방법에서의 fxml 구성 요소에 변화를 만들려고 할 때마다 나는 문제에 직면하고,이 널 (null) 'code'의 scene.widthProperty을 제공합니다 ( } 캐치 (;) .addListener은 (새 ChangeListener의() { 공공 무효가 변경 @Override는 { 시도 { controller.resizeComponents() (ObservableValue는 관찰, 번호 oldValue입니다, 수 NEWVALUE 번호를 확장>) 예외 e) { System.out.println (e.getMessage()); } } }); 'code' –
viper
@viper 로더 클래스의 변경 리스너에서 컨트롤러 메소드를 호출하려고했을 때 수신 된 에러 – SimY4
에 대한 세부 정보를 제공하십시오. 프린트 문을 실행하지만 null을 제공합니다. fxml의 구성 요소가 scene.widthProperty().의 addListener (새 ChangeListener의() { @Override가 공개 무효가 (ObservableValue는 관찰, 번호 oldValue입니다, 수 NEWVALUE) { 시도 { controller.resizeComponents 번호 확장> 변경 (); // 컨트롤러는 fxml 컨트롤러의 객체입니다. } // 컨트롤러 코드 public void resizeComponents() { System.out.println ("hi"); acPane.setMinSize (300, 400); } –
viper