日期:2014-05-20  浏览次数:20558 次

求助:多面板中的绘图问题
这是我的数据结构课程设计,实现的是交通咨询系统,查找最优路径。
主要算法没有问题,但是有一项关于绘图的操作却总有问题。

我在“修改城市/路线”面板内点击“添加城市”按钮;
结果在当前面板内重新绘制了正确的图形,添加了新城市,但有bug即按钮也显示了出来;
但是当我选择图形应在的“地图”面板时,又恢复了原图;
但选择“重置”按钮后,又显示了正确的图形,即显示了添加的城市。

其中,“添加城市”的代码主要为:
//   监听修改城市信息按钮
                newcity=tP4TextField1.getText();//获得添加城市的名称
                newcityxx=Integer.parseInt(tP4TextField2.getText());//获得添加城市的坐标
                newcityyy=Integer.parseInt(tP4TextField3.getText());//获得添加城市的坐标
               
                myTG.city[myTG.vexnum]=newcity;//把添加城市的信息添加进交通图的数组
                myTG.x[myTG.vexnum]=newcityxx;//把添加城市的信息添加进交通图的数组
                myTG.y[myTG.vexnum]=newcityyy;//把添加城市的信息添加进交通图的数组
                myTG.vexnum++;//数组中个数增加
                myTG.CreateAdjList();//重新构建有向图
               
                initTranPanel1();//重置面板
                myMap.update(myMap.getGraphics());//重新绘图
使用update就会出现这样的问题,但是如果换成repain又不能显示;
但是如果我把当前面板改为“地图”面板后,新添加的城市闪一下就消失了,重置后又能出现,主要修改代码如下:
                tranPanel.setSelectedIndex(0);  
                myMap.update(myMap.getGraphics());//重新绘图
                myTG.InitTranFlag();
                myMap.repaint();//重新画
另外,附上“重置”按钮的代码:
//   监听重置路径的按钮
                sPjLabel3.setText( "0 ");
                sPjLabel4.setText( "0 ");
                sPjTextArea.setText( "\n\n\n       欢迎使用\n   交通咨询系统 ");
                myTG.InitTranFlag();
                myMap.repaint();//重新画
                initTranPanel3();

我不知道这是什么问题,应该怎样修改才能正确显示,是update\repaint的问题还是别的什么。有一个研究生姐姐说是因为在一个面板中对另一个面板进行了操作,就会产生这样的问题,可能用线程能够解决。如果是这样的话,线程应该加在什么位置?因为对线程还不怎么感冒,不太会用

期待各位高手的帮助:)



------解决方案--------------------
自己顶一下,有高手能帮忙解决一下么?

------解决方案--------------------
画图时不用super就可以了,但是为什么呢?
再顶!!
------解决方案--------------------
不知道
帮你顶下