[JAVA] Hur kollar man efter en klickning i en rektangel?
Som rubriken lyder.
Nu när jag är arbetslös tänkte jag ta upp programmeringen igen.
Jag är ganska ny och tänkte testa java. Jag har läst C# i drygt 5 år och tänkte ge mig på något enkelt, så jag ska testa att göra en java applikation.
Jag har kommit så långt att jag har en rektangel som rör sig och studsar mot kanterna men jag vill kunna klicka på den för att öka hastigheten på den.
Sen vill jag högerklicka på den för att sänka hastigheten.
Jag har kikat på lite exempel mellan intersect, contains men inte riktigt kommit fram till något.
Källkod:
Main:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;
public class RectangleMover
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final RectangleComponent component = new RectangleComponent();
frame.add(component);
frame.setVisible(true);
class TimerListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
component.intersection(1, 1);
}
}
ActionListener listener = new TimerListener();
Timer t = new Timer(Speed, listener);
t.start();
}
public static int Speed = 30;
private static final int WIDTH = 300;
private static final int HEIGHT = 400;
}
Själva rektangeln:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
public class RectangleComponent extends JComponent
{
/**
*
*/
private static final long serialVersionUID = 1L;
public RectangleComponent()
{
box = new Rectangle(X_POS, Y_POS,
WIDTH, HEIGHT);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.draw(box);
}
public void intersection(int dx, int dy)
{
java.awt.Point p = box.getLocation();
int x = p.x;
int y = p.y;
if (x == getWidth() - WIDTH) {
goingRight = false;
}
else if (x == 0) {
goingRight = true;
}
x = goingRight? p.x + dx : p.x - dx;
if (y == getHeight() - HEIGHT) {
goingDown = false;
}
else if (y == 0) {
goingDown = true;
}
y = goingDown? p.y + dy : p.y - dy;
box.setLocation(x, y);
repaint();
}
private Rectangle box;
private static int X_POS = 100;
private static int Y_POS = 100;
private static int WIDTH = 20;
private static int HEIGHT = 20;
private boolean goingRight = true;
private boolean goingDown = true;
}
Det är inte en skoluppgift.