問題編碼的業務模擬,以及如下結構有代碼:多JFrames
在我的項目類的主要功能,我只運行的代碼短位:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
InputGUI inputgui = new InputGUI();
inputgui.setVisible(true);
}
});
其中InputGUI()是一個調用JFrame的類,我使用文本字段將參數傳遞給模擬。我點擊了一個JButton,在其ActionPerformed事件處理函數中調用函數runsimulation()。
在這個運行仿真中,我運行實際仿真,但也打開一個新的JFrame,它可視化地模擬仿真正在做什麼。代碼如下所示:
RoadNetwork roadnetwork = new RoadNetwork();
roadnetwork.setVisible(true);
JFrame frame = new JFrame();
frame.add(roadnetwork);
frame.setSize(1250, 750);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
其中RoadNetwork是一個擴展JPanel的類,它通過覆蓋paintComponent來處理vizualisation。然後,我在runsimulation()函數迭代的for循環,我叫
roadnetwork.repaint();
其使用時,所有我的代碼只是在主函數,我沒有寫和使用的GUI類尚未工作。
但是,現在JFrame打開時,我打了JButton,但框架不會更新,直到模擬結束。當它結束時,仿真的最後一個狀態就會按照它的樣子繪製,但在此之前,我只能看到模擬正常發生的灰色區域和窗口周圍的黑色邊框。
我在做什麼錯?
聽起來像你正在EDT上進行模擬,這可能不是你想要的。看看Swing中的併發性。 –