我正在重做一个我用处理做的项目,因为我想在 JavaFX 中进行一些练习,因为明年我将在 uni 中需要它,它会给我更多的 ui 比处理更多的自由。这意味着我不熟悉使用 javafx 做事,抱歉。
我想在我的主窗口中有一个容器来容纳一些窗格。在这些窗格上,我稍后会单独使用。我选择了 FlowPane,较小的窗格只是,嗯,窗格。我希望如果窗口的大小发生变化,则会创建(删除)更多的窗格,并且始终在容器上显示完美数量的窗格(这有点难以解释,但请查看链接的图片下面,你就会明白了)。这在 99% 的时间里工作得很好,但有时窗格会溢出流程窗格。我尝试了很多来解决这个问题(几乎是蛮力解决的,哈哈),但我找不到比这更好的了。
不良行为
期望的行为
项目的Github如果你想自己尝试
控制器代码:
public class MainWindowController {
private int sizeOfOneGame = 100; //In pixel
//Space between the frame of the Pane that holds all games and the games
private int[] paddingAroundGames = {30, 30, 30, 30}; //Top, Right, Bottom, Left
//Space between two games
private int[] gapBetweenGames = {10, 10}; //X, Y
@FXML
FlowPane flowPaneGames;
public void initialize(){
//Sets space between two games in the flowPane
flowPaneGames.setHgap(gapBetweenGames[0]);
flowPaneGames.setVgap(gapBetweenGames[1]);
//Sets space between all games and the border of the flowPane
flowPaneGames.setPadding(new Insets(paddingAroundGames[0], paddingAroundGames[1], paddingAroundGames[2], paddingAroundGames[3]));
//Draws one frame around the flowPane
flowPaneGames.setStyle("-fx-border-color: black");
//Aligns the panes to the center
flowPaneGames.setAlignment(Pos.BASELINE_CENTER);
//Adds listeners to the width and height of the flowPane holding the games -> Adjusts shown Panes on size change
flowPaneGames.widthProperty().addListener(e -> flowPaneGamesSizeChanged());
flowPaneGames.heightProperty().addListener(e -> flowPaneGamesSizeChanged());
}
}
如果有人能帮我解决这个问题,我会很高兴(即使它只在少数情况下发生),这真的让我很困扰。
旁注:我已经在这里问过这个问题,但我几乎没有努力解决几乎没有任何答案的问题,这次我试图做得更好。人们还抱怨说我没有真正遵循 Java 的命名约定,我试着听听它并希望代码现在更容易阅读。
慕村225694
相关分类