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