我有一个扩展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()
来返回面板的直接父级。在这种情况下,可能有必要进一步向上移动层次结构,直到到达框架为止。
编辑:根据您要实现的目标,建议您首先尝试使用安德鲁的建议并使用布局管理器。仅当布局管理器未提供所需功能时,才应直接使用父级的尺寸(请注意,提供功能的方式可能与您期望的方式不同)。