这是我的数据结构课程设计,实现的是交通咨询系统,查找最优路径。
主要算法没有问题,但是有一项关于绘图的操作却总有问题。如图所示
如附件图一,我在“修改城市/路线”面板内点击“添加城市”按钮;
结果在当前面板内重新绘制了正确的图形,添加了新城市,但有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的问题还是别的什么。有一个研究生姐姐说是因为在一个面板中对另一个面板进行了操作,就会产生这样的问题,可能用线程能够解决。如果是这样的话,线程应该加在什么位置?因为对线程还不怎么感冒,不太会用
期待各位高手的帮助:)
求助:多面板的绘图问题