經過多次嘗試和研究,我沒有設法從Pane獲得可見性事件。下面的示例似乎是我最好的嘗試,但它不起作用。 歡迎任何工作主張。如何在Pane上獲取JavaFX 2.0可見性事件?
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class VisibilityTestMain extends Application {
public static void main(String[] args) {
VisibilityTestMain.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Pane root = new Pane();
ChangeListener<Boolean> visibilityListener = new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldValue, Boolean newValue) {
System.out.println("####");
}
};
root.visibleProperty().addListener(visibilityListener);
Button button = new Button("Hello");
button.setTranslateX(10);
button.setTranslateY(20);
root.getChildren().add(button);
stage.setScene(new Scene(root, 50, 50));
stage.show();
}
}
我不認爲你將窗格添加到你的場景。我錯了嗎? – Fabinout
@Fabinout通常我會,因爲按鈕在我運行時可見。它應該與行:'stage.setScene(新場景(根,50,50));' – Jakez
是的,你是對的。 – Fabinout