возникла новая проблема...пытаюсь добавить в| Код | public void mouseClicked(MouseEvent evt)
|
метод рисование звезды по клику мыши...но в 15 строчке | Код | addItem(f,1,evt.getPoint().x,evt.getPoint().y);
|
f подчеркивается...
| Код | import java.awt.event.*; import java.util.*;
import javax.swing.JComponent; import javax.swing.JFrame;
public class Main extends JComponent implements Runnable { private class MouseClick extends MouseAdapter { public void mouseClicked(MouseEvent evt) { if ((evt.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { System.out.println("left " + (evt.getPoint())); addItem(f,1,evt.getPoint().x,evt.getPoint().y); //вот тут и не работает... } if ((evt.getModifiers() & InputEvent.BUTTON2_MASK) != 0) { System.out.println("middle " + (evt.getPoint())); } if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) != 0) { System.out.println("right " + (evt.getPoint())); } } } 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, double d, int width, int height) { Square sq = new Square(d,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(); m.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.BLACK)); m.setSize(new java.awt.Dimension(600, 600)); JFrame f=new JFrame("STARS"); f.setLayout(null);
m.squares = new ArrayList<Square>(); m.addItem(f, -0.5, 30, 30); m.addItem(f, 3, 220, 30); m.addItem(f, 10, 220, 230); m.addItem(f, 60, 151, 351); f.add(m);
f.setSize(400, 400); f.setResizable(false); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); m.run(); } }
|
| Код | import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.*; import javax.swing.JComponent;
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); } }
|
|