2014-01-23 50 views
-2

我可以使用Jpanel上的圖形繪製圖像嗎?如果可以,它是如何工作的?我可以使用Jpanel上的圖形進行繪製,如果可以,它是如何工作的?

JPanel Game = new JPanel(); 
    Game.setLayout(null); 
    Game.setLocation(0,0); 
    Game.setSize(500,700); 
    Game.setBackground(Color.WHITE); 
    Game.setBorder(BorderFactory.createLineBorder(Color.black)); 

我怎樣才能在此JPanel

+1

_「我怎樣才能在此JPanel添加的paintComponent」 _ - 'MyPanel擴展JPanel' –

回答

3

是的,風俗畫,你必須子類中添加的paintComponent您JPanel那麼你必須重寫paintComponent調用第一線super.paintComponent(..)

例子:

JPanel game = new JPanel(){ 
    @Override 
    public void paintComponent(Graphics g){ 
      super.paintComponent(g); 
      //custom painting here 
    } 
}; 
//game.setLayout(null); don't use null layout 
game.setLocation(0,0); 
game.setSize(500,700); 
game.setBackground(Color.WHITE); 
game.setBorder(BorderFactory.createLineBorder(Color.black)); 

詳情請閱讀Painting in AWT and Swing | Performing custom painting in Swing

注意:在java變量的名稱中,以駝峯樣式開頭的小寫字母爲convention。所以Game應該是game

+0

+1簡單的例子,鏈接到教程並更正「遊戲」變量名稱。 – camickr

0

如果你想在組件上實現你自己的自定義繪畫,你必須創建自己的類來擴展該組件。你會的東西開始喜歡

public class MyPanel extends JPanel { 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     //Add your custom painting here 
    } 
} 

然後,您可以使用該面板的東西,如

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 

private static void createAndShowGUI() { 
    System.out.println("Created GUI on EDT? " + SwingUtilities.isEventDispatchThread()); 
    JFrame f = new JFrame("Demo"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.add(new MyPanel()); 
    f.pack(); 
    f.setVisible(true); 
} 
+0

-1,類名應該以大寫字母開頭。 OP已經錯誤地命名了「遊戲」變量。應該鼓勵適當的命名標準。 – camickr

+0

也許這有點苛刻,但你必須在示例代碼中輸入兩次類名。所以這是有目的地完成的。我無法知道這是否是您通常編碼的方式。正如我在我的評論中所建議的那樣,您也沒有更正變量名稱,我也不想給OP一個使用隨機命名約定的感覺。如果OP將在論壇上發佈問題,那麼代碼應該是可讀的格式。 – camickr

相關問題