2012-12-02 58 views
1

我想在ActionListener中使用Java paint方法。但是,當Paint放置在ActionListener中時,我的編譯器會拋出錯誤,並且eclipse根本不會將paint識別爲方法,儘管導入了java.awt.geom。*;ActionListener中的Paint方法

private class NumHandler implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
       //Draw Ovals 
       public void paint (Graphics g) 
       { 
        int number; 
        int x = 10; 
        int y = 30; 
        int width = 20; 
        int height = 10; 

        number = Integer.parseInt(numberTF.getText()); 

        for (int i = 0; i < number; i++) 
        { 
         g.drawOval(x, y, width, height); 

         x += 5; 
         y += 5; 
         width += 5; 
         height += 5; 
        } 
       } 
    } 

} 

回答

3

paint方法不能是你的actionPerformed方法內。它需要作爲組件的類成員方法存在,而不是NumHandler。您可以在您的ActionListener方法中將單個repaint()呼叫置於請求重新進行重新繪製。

請勿將很可能導致異常在paint的方法,即任何邏輯:

number = Integer.parseInt(numberTF.getText()); 

這在actionPerformed方法做得更好。

另外,如果使用Swing,paintComponent是優化塗料性能的首選。請記得致電super.paintComponent(g);重新繪製任何子組件。

參見:Painting in AWT and Swing

+0

我做你的指示的東西,這也解釋了很多給我。然而,在行動事件後,沒有任何東西被繪製。我需要一個JPanel嗎? –

+0

我想說,請把原始問題的舊代碼放回原處,併發佈一個新問題。否則,這個答案就沒有任何意義。我很樂意回答任何新帖子。 :) – Reimeus

+0

會做。這個答案確實有效地解決了我原先提出的問題 –