我已经创建了一个基本的Java程序,它在启动时创建一个矩形,每次单击它时,矩形都会增长并更改为不同的(随机)颜色。下面是我的代码:
package rectPAK;
import javax.swing.JFrame;
public class DisplayRect {
public static void main(String[] args) {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(0,0,1000,1000);
window.getContentPane().add(new MyCanvas());
window.setVisible(true);
}
}然后myCanvas是这样的:
package rectPAK;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;
import javax.swing.JComponent;
public class MyCanvas extends JComponent{
int W = 100;
int H = 100;
int r;
int g;
int b;
int trans;
int maxRandNum = 255;
int xPoint;
int yPoint;
public MyCanvas() {
this.addMouseListener(m);
this.addMouseMotionListener(ml);
}
Random rand = new Random();
MouseListener m = new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
W = W + 20;
H = H + 20;
r = rand.nextInt(maxRandNum);
g = rand.nextInt(maxRandNum);
b = rand.nextInt(maxRandNum);
trans = rand.nextInt(maxRandNum);
repaint();
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
};
MouseMotionListener ml = new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getLocationOnScreen();
xPoint = p.x;
yPoint = p.y;
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
};
public void paint(Graphics gr) {
gr.setColor(Color.BLACK);
gr.drawRect(xPoint, yPoint, W, H);
gr.setColor(new Color(r,g,b,trans));
gr.fillRect(xPoint, yPoint, W, H);
}
}现在我的问题是:我如何让它在我右击矩形时,它恢复到以前的大小和颜色?我知道这要求很多,但我找不到任何关于它的东西...
非常感谢。
发布于 2012-02-11 09:58:18
使用一组“前一个”变量(例如previousX、previousY、previousR等)在每次更新之前存储旧信息,并创建一个右键单击事件来调用像paint方法这样的方法,将对象的变量设置为previousX、previousY等。
发布于 2012-02-11 10:17:24
每次生成随机数时,将其存储为前一个实例。这样你就可以后退一步了。如果你想一直回到第一个阶段,那么你应该将每个创建的矩形的参数存储在一个排序的堆栈中,在那里你可以弹出之前的每个阶段。
完成后,您应该创建一个处理右键单击的方法,并且在该方法中,您应该将矩形参数设置为先前的值。
https://stackoverflow.com/questions/9237145
复制相似问题