Witam,
napisałem pewien program, który ma za zadanie wyświetlić kwadrat po upływie 2 sec i jeślu użytkownik go naciśnie to ma zniknąć, i tak w kółko, aż licznik nie osiągnie 30. Lecz mam program, gdyż kwadrat nie chce mi się wyświetlić i nie wiem dlaczego :( Tu jest kod:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.Timer;
import javax.swing.*;
public class Mouse extends JComponent {
public Mouse()
{
squares = new ArrayList<Rectangle2D>(1);
current = null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public void time()
{
for(int i = 0; i <30; i += 2)
{
ActionListener listner = new Time();
Timer t = new Timer(sec, listner);
t.start();
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if(drawRectangle)
{
int x = new Random().nextInt(679);
int y = new Random().nextInt(779);
Rectangle2D rec = new Rectangle2D.Double(x,y,20,20);
g2.setPaint(Color.BLACK);
g2.fill(rec);
}
}
public void add(Point2D p)
{
double x = p.getX();
double y = p.getY();
current = new Rectangle2D.Double(x - 20, y - 20, 20, 20);
squares.add(current);
repaint();
}
public void remove(Rectangle2D s)
{
if(s == null)
return;
if(s == current)
{
current = null;
squares.remove(s);
repaint();
}
}
public Rectangle2D find(Point2D p)
{
for(Rectangle2D r : squares)
{
if(r.contains(p))
return r;
}
return null;
}
private class Time implements ActionListener
{
public void actionPerformed(ActionEvent event) {
drawRectangle = true;
repaint();
}
}
private class MouseHandler extends MouseAdapter
{
@SuppressWarnings("unused")
public void Cliked(MouseEvent event)
{
current = find(event.getPoint());
remove(current);
}
}
private class MouseMotionHandler implements MouseMotionListener
{
@Override
public void mouseDragged(MouseEvent event) {
//brak opcji
}
@Override
public void mouseMoved(MouseEvent event) {
if(find(event.getPoint()) == null)
setCursor(Cursor.getDefaultCursor());
else
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
}
private int sec = 2*1000;
private boolean drawRectangle = false;
private Rectangle2D current;
private ArrayList<Rectangle2D> squares;
}
Ps. Proszę jeszcze o sprawdzenie kodu, gdyż jestem początkującym i pewnie mogłem zrobić błędy.
Z góry dziękuje.