我有一个扩展JFrame的Layout类。后来我添加了RoadPanel扩展了JPanel。在运行时是否可以知道Layout中的RoadPanel帧大小?



class Layout extends JFrame{
    ...Something...
    RoadPanel rp = new RoadPanel();
    this.add(rp);
}

class RoadPanel extends JPanel{
    ...graphics and components...
}


两者都在不同的类中实现。


到目前为止,我尝试将帧大小发送到RoadPanel的构造函数中。是的,那太la脚了,它在启动时只会发送一次。 :(

如何使其动态,使其不断更新?



为什么我要这样做?因为...


  知道镜架尺寸的目的是缩小我的
  RoadPanel :)但是我不想扩大规模。所以现在我可以检查
  如果帧大小小于我的path.getBounds2D,则重新绘制所有行
  弧形并适合可见区域。但是当您增加镜架尺寸时,
  RoadPanel绘图应保持不变,并且可以手动放大
  使用缩放按钮。


特别提示安德鲁·汤普森(Andrew Thompson)的答案:更好的练习。

最佳答案

您可以将框架本身传递给面板构造函数,然后再查询尺寸,也可以使用getParent()来返回面板的直接父级。在这种情况下,可能有必要进一步向上移动层次结构,直到到达框架为止。

编辑:根据您要实现的目标,建议您首先尝试使用安德鲁的建议并使用布局管理器。仅当布局管理器未提供所需功能时,才应直接使用父级的尺寸(请注意,提供功能的方式可能与您期望的方式不同)。

10-04 14:24