2014-02-28 30 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