调整大小后如何重新绘制所有JPanels?

时间:2018-11-14 21:30:23

标签: java swing graphics jframe jpanel

我目前有2个JPanel被添加到JFrame中。调整窗口大小后,仅重新添加最近添加的JPanel。如何确保所有JPanels调整大小?在我的程序中,我发射了烟花并具有网格线。我希望每个人都拥抱屏幕的底部。

使用此代码,发射的烟火会调整大小以拥抱,但网格线不会:

id

使用此代码,将发生相反的情况:

spark2-submit \
--class com.demo.Main \
--master yarn --deploy-mode client \
--driver-memory 10G --driver-cores 8 --executor-memory 13G --executor-cores 4 \
--num-executors 10 \
--verbose \
--conf "spark.driver.extraJavaOptions=-Dconfig.file=/$HOME/application.conf -Dlog4j.configuration=$HOME/log4j.properties" \
--conf "spark.executor.extraJavaOptions=-Dconfig.file=$HOME/application.conf -Dlog4j.configuration=$HOME/log4j.properties" \
--files "application.conf,log4j.properties" \
$HOME/ingestion-1.0-SNAPSHOT-jar-with-dependencies.jar

默认状态:https://i.imgur.com/cpzpBha.png

代码1调整了大小:https://i.imgur.com/SRdh2oA.png

代码2调整了大小:https://i.imgur.com/VHY4Ff1.png

1 个答案:

答案 0 :(得分:0)

  

那么有什么办法可以拥有单独的网格线类,还是应该将它们组合在一起?

您建立了父母/子女关系。

所以您的逻辑将类似于:

FireworkP foreground = new FireworkP(150, 45, 7, 2);
foreground.setOpaque( false );

Grid background = new Grid();
background.add(foreground);

frame.add(background);
frame.setVisible(true);

以上假设:

  1. 您的FireworkP和Grid类是您执行自定义绘制的JPanels。
  2. 您的课程使用适当的布局管理器

所以现在您的GUI具有如下结构:

- frame
    - background
        - foreground

因此,您具有可以在Z轴上彼此绘制的组件。

如果在同一面板上添加多个组件,则这些组件将在X / Y轴上绘制