更新显示的边缘重量而不是“笨重”

时间:2013-12-18 16:51:05

标签: java awt jgrapht jgraph

我正在使用Jgrapht基于有向加权图构建模拟环境。我现在想用Jgraph显示模拟。

虽然我已经弄清楚如何显示图形并在模拟运行时更新它,但我注意到当边缘权重更新时,整个窗口会闪烁。现在我调用frame.paintComponents()来更新窗口。

我相信我可以让它只更新正在改变的各个边缘,但我不熟悉java.awt

public static void main(String [] args) throws InterruptedException
{

    Simulation newSim = new Simulation(31, .01);//extends ListenableDirectedWeightedGraph

    SimulationViewer applet = new SimulationViewer(newSim);//extends JApplet
    applet.init();

    JFrame frame = new JFrame();
    frame.getContentPane().add(applet);
    frame.setTitle("Simulation Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);


    //run simulation
    for (;newSim.getStep() < newSim.getMAX_STEP(); newSim.incrementStep()) {
        BreadthFirstIterator<SimulationBlock, Signal> iter = 
                         new BreadthFirstIterator<SimulationBlock, Signal>(newSim, newSim.head);

        while (iter.hasNext()) {
            iter.next().execute(newSim);
            //update graphics
            frame.paintComponents(applet.getGraphics());//looks clunky
            Thread.sleep(500);
        }

    }

}

1 个答案:

答案 0 :(得分:0)

看起来我需要为applet调用update方法。取代:

frame.paintComponents(applet.getGraphics());//looks clunky

使用:

applet.update(applet.getGraphics());

这看起来有点时髦,也许我需要重构这段代码,以便在SimulationViewer类中。