2014-02-28 44 views
0

我正在繪製形狀和形狀存儲到ArrayList中。 當我打開時,除了最後一個繪製的數組外,所有形狀都清除了數組列表。在繪製形狀時在JPanel中爲我的畫布清除按鈕

我甚至

Arraylist list = new Arraylist(); 
list.clear(); 
JOptionPane.showMessageDialog(null, "Size is: " + list.size()); 

只是爲了證明大小爲0,一個類似的測試,以確保最後添加的對象加入到數組列表。可能的原因是什麼?

+0

這意味着列表確實是空的,但是您的渲染邏輯要麼未被調用,要麼沒有錯誤。你可以發佈他們如何被畫到屏幕上嗎? – AbstractChaos

+1

可能你需要再次調用repaint()。 –

+0

我做到了。仍然留下屏幕上的最後一個人。 – KnowledgeGeek

回答

2

在清除按鈕的事件處理程序中調用repaint()方法。

list.clear(); 
repaint(); 

它會刷新您的畫布。

+0

對不起,我忘了提及我加了重漆。同樣的錯誤。 – KnowledgeGeek

+0

使用remove()方法從父窗口中移除畫布,並添加一個新的畫布。 –

2
Arraylist list = new Arraylist(); 
list.clear(); 

那麼,這並沒有做任何事情,因爲所有做的都是創建一個本地變量,它是空的開始,然後清空空的列表。你的繪畫代碼仍然會引用你的類的實例變量。您的代碼應該是:

//Arraylist list = new Arraylist(); 
list.clear(); 
+0

這就是我的代碼所做的... – KnowledgeGeek

+0

ArrayList填充爲用戶繪製矩形 – KnowledgeGeek

+0

@KnowledgeGeek,'這就是我的代碼所做的......' - 這不是你發佈的內容!如果您需要幫助,請發佈您的[SSCCE](http://www.sscce.org/),以說明問題。我們不介意讀者,也不能猜測你在做什麼。 – camickr