2016-12-04 86 views
0

我需要實現一個狹窄的橋樑的解決方案,我是新的Java線程和gui。 我有三條道路和一座橋(有兩條車道).20每條道路的車輛應隨機創建,並應根據道路上的光線通過橋樑。 ?Java多線程與GUI(交通模擬器的種類)

但首先,我只是想解決一個簡單的問題,這是我怎麼能在這條路上有螺紋上移動車(睡眠1秒,移動點點)

我想這樣: 我用簡單的PaintComponent函數覆蓋創建了道路(我不確定它是否也會像這樣實現)。 創建一個實現可運行的道路類和車輛類。 我在Road類中創建了20輛車的陣列並卡在這裏。

我應該如何將它添加到JPanel並每隔1秒移動一次? 我完全錯誤的如何實現這個問題,因爲我有C系列的背景?

我的代碼:

公共類NarrowBridge {

public static void main(String[] args) { 



    JFrame myFrame = new JFrame(); 
    PanelSetter newPanel = new PanelSetter(); 
    myFrame.add(newPanel); 
    myFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    myFrame.setSize(600, 600); 
    myFrame.setTitle("Narrow Bridge Problem "); 

    myFrame.setLocationRelativeTo(null);//To centralize the jframe. 
    myFrame.setVisible(true); 

} 

}

類PanelSetter擴展JPanel {

public Road Road1 = new Road(true); 
public Road Road2 = new Road(false); 
public Road Road3 = new Road(false); 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 


    //Fixed Roads Drawing. 
    g.setColor(Color.BLACK); 
    g.drawLine(50, 100, 200, 100); 
    g.drawLine(50, 130, 200, 130); 

    g.setColor(Color.BLACK); 
    g.drawLine(50, 210, 200, 210); 
    g.drawLine(50, 240, 200, 240); 

    g.setColor(Color.BLACK); 
    g.drawLine(50, 320, 200, 320); 
    g.drawLine(50, 350, 200, 350); 


    //Road 1 Light. 
    if (Road1.getLight()) { 

     g.setColor(Color.GREEN); 
     g.fillOval(180, 70, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 70, 20, 20); 

    } 
    //Road 2 Light. 
    if (Road2.getLight()) { 
     g.setColor(Color.GREEN); 
     g.fillOval(180, 180, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 180, 20, 20); 

    } 
    //Road 3 Light. 
    if (Road3.getLight()) { 
     g.setColor(Color.GREEN); 
     g.fillOval(180, 290, 20, 20); 

    } else { 
     g.setColor(Color.RED); 
     g.fillOval(180, 290, 20, 20); 

    } 

} 

}

路只是一個簡單的課程,只有布爾光,我試過的東西是車輛[]車=新車[20]。

+0

這裏是什麼道路?粘貼你的課 – Shriram

+0

@Shriram我添加了它的內容,但它只不過是一個標準的基礎類。謝謝你的幫助。 –

回答

0

最後,我在Java小程序的幫助下解決了我的問題。 我能夠通過applet作爲參數,我打電話給它的paint()函數和更新屏幕。