ChangeListener を Scene に追加して、scene.widthProperty() と scene.heightProperty() で呼び出すことができますが、ウィンドウが最大化ボタンで最大化されている場合は適用されません。
Scene.getWindow() のようにアクセスすると、ウィンドウの onResize プロパティが見つかりません。
ウィンドウのサイズ変更に基づいてテーブルの列のサイズを変更する必要があるのは次のとおりです。
ウィンドウ全体が最大化されているときに resizeColumns リスナーを追加するにはどうすればよいですか (これは scene.widthProperty() または scene.heightProperty() としては資格がありません)。
ChangeListener<Object> resizeColumns = new ChangeListener<Object>(){
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
new Thread() {
// runnable for that thread
public void run() {
Platform.runLater(new Runnable(){
public void run() {
// what will be ran in gui thread
Double width =primaryStage.getWidth();
DraftController controller = (DraftController)loader.getController();
TableView<Player> teamTable =controller.getTeamTable();
centerColumns(width, controller, teamTable);
TableView<Player> top10Table = controller.getTop10Table();
AnchorPane anchor = controller.getAnchorPane();
centerColumns(anchor.getWidth()+anchor.getWidth()*.04,controller,top10Table);
}
private void centerColumns(Double width, DraftController controller, TableView<Player> teamTable) {
ObservableList<TableColumn<Player, ?>> columnList = teamTable.getColumns();
for (int i=0 ; i<columnList.size(); i++){
columnList.get(i).setPrefWidth((width-17)/teamTable.getColumns().size());
}
}
});
}
}.start();
}
};
scene.widthProperty().addListener(resizeColumns);
scene.heightProperty().addListener(resizeColumns);
guage: lang-java -->