1 回答
TA贡献1765条经验 获得超5个赞
有人可以告诉我从哪里开始吗?
父面板需要知道子面板之间的关系。
一种方法是保持跟踪ArrayList组件对之间的关系。然后,您需要重写paintChildren(...)父面板的方法以在两个子面板之间绘制一条线。
您在父面板类中定义 ArrayList:
private ArrayList<Component> relationships = new ArrayList<Component>();
然后根据需要将组件对添加到 ArrayList:
relationships.add( component1a );
relationships.add( component1b );
基本的绘画代码是:
@Override
protected void paintChildren(Graphics g)
{
for (int i = 0; i < relationships.size(); i += 2)
{
Component one = relationships.get(i);
Component two = relationships.get(i + 1);
Point p1 = //calculate the center of component one
Point p2 = //calculate the center of component two
g.drawline(p1.x, p1.y, p2.x, p2.y);
}
super.paintChildren(g);
}
因此,上面的代码应该在添加到 ArrayList 的每对组件的中心点之间绘制线条。然后,子面板将绘制在线条的顶部,以便线条看起来像是从每个组件的边缘出来的。
查看trashgod 的GraphPanel示例。此示例支持拖动形状,并且线条将跟随形状。
添加回答
举报