Пишу лабораторную. Надо реализовать появление вращающихся звезд и возможность регулирования их скорости. Появляться звезды должны на среднюю кнопку мыши, увеличиваться скорость вращения на ЛКМ, уменьшаться на ПКМ. Почему то не работает обработчик событий кнопок мыши. В джаве я новичок... | Код | import java.awt.event.*; import java.util.*;
import javax.swing.JComponent; import javax.swing.JFrame;
class Main extends JComponent implements Runnable { private class MouseClick extends MouseAdapter { public void mouseClicked(MouseEvent event) { if (event.getButton() == MouseEvent.BUTTON1) { System.out.println("Left mouse button"); } else if (event.getButton() == MouseEvent.BUTTON2) { System.out.println("Middle mouse button"); } else if (event.getButton() == MouseEvent.BUTTON3) { System.out.println("Right mouse button"); } } } private static final long serialVersionUID = 1L; public ArrayList<Square> squares; public Thread t; MouseClick mouse_control; Main() { new Thread(this).start(); mouse_control = new MouseClick(); addMouseListener(mouse_control); } public void addItem(JFrame frame, int speed, int width, int height) { Square sq = new Square(speed,width, height); sq.setBounds(0, 0, 1024, 1000); this.squares.add(sq); frame.add(sq);
}
public void run() { try { while(true) { Thread.currentThread(); Thread.sleep(10); for (int i = 0; i < squares.size(); i++) { squares.get(i).rotateRect(); squares.get(i).repaint(); } } } catch(Exception ex){} } public static void main(String [] args) { Main m = new Main(); JFrame f=new JFrame("STARS"); f.setLayout(null);
m.squares = new ArrayList<Square>(); m.addItem(f, 1, 30, 30); m.addItem(f, 1, 220, 30); m.addItem(f, 10, 220, 230); f.add(m);
f.setSize(400, 400); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); m.run(); } }
|
| Код | import java.awt.Color; import java.awt.Event; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.*;
import javax.swing.JComponent; import java.io.*;
public class Square extends JComponent// implements Runnable { AffineTransform at = new AffineTransform(); double angle=0; int width=0, height=0; public Shape shape; public Color color; Square(double angle, int width, int height) { this.angle=angle; this.width=width; this.height=height; } public void paint(Graphics g) { Graphics2D g2=(Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //Rectangle rect=new Rectangle(20, 20, width, height); Path2D.Double path = new Path2D.Double(); path.moveTo(22 + width, 1 + height); path.lineTo(27 + width, 16 + height); path.lineTo(42 + width, 16 + height); path.lineTo(30 + width, 25 + height); path.lineTo(35 + width, 40 + height); path.lineTo(22 + width, 31 + height); path.lineTo(9 + width, 40 + height); path.lineTo(14 + width, 25 + height); path.lineTo(2 + width, 16 + height); path.lineTo(17 + width, 16 + height); path.closePath(); path.transform(at); // g2.transform(at); //g2.draw(rect); g2.setColor(Color.RED); g2.fill(path); g2.draw(path); }
public void rotateRect() { at.rotate(Math.toRadians(angle), 22 + width, 22 + height); } }
|
|