Java 如何制作小程序动画?
我尝试为数组制作applet,包括插入/删除/搜索操作 对于插入和删除,很容易:一旦用户单击“插入”或“删除”按钮,只需更新数组,然后调用“重新绘制”重新绘制数组。Java 如何制作小程序动画?,java,animation,applet,Java,Animation,Applet,我尝试为数组制作applet,包括插入/删除/搜索操作 对于插入和删除,很容易:一旦用户单击“插入”或“删除”按钮,只需更新数组,然后调用“重新绘制”重新绘制数组。 但是搜索是不同的,它是一个动画,一旦单击搜索按钮,我想从数组中的第一个元素开始,用强光检查该元素的值。我有下面的代码,但它只是在最后一步(当元素被找到时)高亮显示元素,它没有像我预期的那样高亮显示每个元素,我对applet动画不太熟悉,有人可以帮助吗?谢谢 // index for search. private searchInd
但是搜索是不同的,它是一个动画,一旦单击搜索按钮,我想从数组中的第一个元素开始,用强光检查该元素的值。我有下面的代码,但它只是在最后一步(当元素被找到时)高亮显示元素,它没有像我预期的那样高亮显示每个元素,我对applet动画不太熟悉,有人可以帮助吗?谢谢
// index for search.
private searchIndex = -1;
public boolean search(int number) {
boolean found = false;
for (int i = 0; i < arr.getSize(); i++) {
searchIndex = i;
repaint();
revalidate();
if (arr.getElement(i) == number) {
found = true;
break;
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return found;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2;
g2 = (Graphics2D) g;
g2.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int xPos = START_X, yPos = START_Y;
int width = CELL_WIDTH, height = CELL_HEIGHT;
Font font = new Font("Serif", Font.BOLD, 12);
g2.setFont(font);
// draw array
for(int i = 0; i < arr.getSize(); i++) {
int element = arr.getElement(i);
g2.setColor(Color.BLUE);
g2.drawString(Integer.toString(element), xPos + OFFSET - 5, yPos + OFFSET + 5);
g2.setColor(Color.BLACK);
g2.drawRect(xPos, yPos, width, height);
xPos += width;
}
// high light the cell
if (searchIndex > -1) {
xPos = START_X + (runSearch * CELL_WIDTH);
g2.setColor(Color.blue);
g2.fillRect(xPos, yPos, width, height);
g2.setColor(Color.white);
g2.drawString(Integer.toString(arr.getElement(searchIndex)), xPos + OFFSET - 5, yPos + OFFSET + 5);
}
}
//用于搜索的索引。
私有搜索索引=-1;
公共布尔搜索(整数){
布尔值=false;
对于(int i=0;i-1){
xPos=开始X+(运行搜索*单元格宽度);
g2.setColor(颜色为蓝色);
g2.fillRect(xPos、YPO、宽度、高度);
g2.设置颜色(颜色为白色);
g2.drawString(Integer.toString(arr.getElement(searchIndex)),xPos+OFFSET-5,yPos+OFFSET+5;
}
}
因为Thread.sleep()导致EDT休眠,这意味着GUI在循环完成之前无法重新绘制自身。相反,您应该使用摆动计时器来安排动画
读这本书。从“并发性”(了解EDT如何工作)和“如何使用计时器”部分开始