2016-03-15 146 views
2

我想用小程序在2個「幀」之間切換。如何重新繪製java applet中的繪畫方法?

我想使用一個小程序來繪製一些東西,然後將其移除並繪製其他東西。有沒有辦法做到這一點?

例子:

if(true){ 
    public void paint1(Graphics g) { 
     g.setColor(Color.black); 
     g.fillRect(80,400, 20, 10); 
    } 
}else 
    public void paint2(Graphics g) { 
     g.setColor(Color.green); 
     g.fillRect(50,440, 70, 60); 
    } 
} 

我試過這個墜毀的小程序所有嘗試。

我的項目:我和我的朋友正在寫一個簡單的代碼,我們需要使用某種applet圖形。我們的想法是製作一個可以讓2個角色上下跳動的程序。問題是,我們將會有一個「AI」,只要他覺得喜歡就跳。所以CardLayout不會工作,因爲那樣我們就掌握了一切。

+1

繪畫*與其他東西*是一個非常模糊的描述,所以我不知道你需要什麼,但看看[CardLayout](https://docs.oracle.com/javase/tutorial/uiswing /layout/card.html)。這是切換不同GUI狀態的典型方法。 – kiheru

+0

我問了一個問題,並且你的答案是否正確。我的錯。我編輯了這個問題,以便它能更準確地提出我需要的東西。 – Marc

+0

@Marc我也會建議使用CardLayout,除非你可以更具體地描述你想在2幀中繪製什麼。 – user3437460

回答

3

如果您打算在2張圖紙之間「切換」,我會建議您使用CardLayout

但是,如果你想繼續與你目前通過繪製基於條件的有,你可以做這樣的事情:

class DrawingSpace extends JPanel{ 

    private BufferedImage display; 
    //Other variables, initializations, constructors not shown 

    private void init(){ 
     display = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
    } 

    public void draw(){ 
     if(whatever){ //if whatever == true 
      Graphics2D g2 = display.createGraphics(); 
      g2.setColor(Color.BLACK); 
      g2.fillRect(80, 400, 20, 10); 
      repaint(); 
     }else{ 
      Graphics2D g2 = display.createGraphics(); 
      g2.setColor(Color.GREEN); 
      g2.fillRect(50, 440, 70, 60); 
      repaint(); 
     } 
    } 

    @Override 
    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     g.drawImage(display, 0, 0, width, height, null); 
    } 
} 
0

那麼第一個問題是:你想什麼時候轉? 在按鈕klick?幾毫秒後?

使用按鈕非常簡單: 您只需繪製2個面板並按默認顯示第一個面板。點擊按鈕後,可以使用repaint()和revalidate()方法刷新JFrame。