Всем добрый день! Уважаемые форумчане, помогите пожалуйста! У меня есть 2 класса(extends JPanel) в обоих идет так скажем динамическое рисование. В первом идет рисование спирали | Код | import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D;
import javax.swing.JPanel; import javax.swing.Timer;
public class Spiral extends JPanel implements ActionListener { double x, y, dx, dy, angle = 0, angle1 = 0, x1 , y1; Double deltaX, deltaY, radius, a, b; boolean q = false; Integer nextX, nextY; double diametr1 = 2, diametr2 = 2; public Spiral() {
} Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); Timer t = new Timer(1, this); public void paintComponent(Graphics g) { super.paintComponents(g); Graphics2D g2 = (Graphics2D)g; a = 1.0; b = 0.3; x = getWidth(); y = getHeight(); radius = a + b * angle; deltaX = radius*Math.cos(Math.PI*angle/180); deltaY = radius*Math.sin(Math.PI*angle/180); dx = (int) (x/2 + deltaX); dy = (int) (y/2 - deltaY); Ellipse2D circle = new Ellipse2D.Double(dx - 10, dy - 10, diametr1, diametr2); if (q == true) { g2.setColor(Color.GREEN); } g2.fill(circle); x = dx; y = dy; t.start(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if(q == false) { angle = angle + 0.1; diametr1 = diametr1 + 0.0015; diametr2 = diametr2 + 0.0015; if(angle == 489.9000000000429 ) { q =true; } } if (q == true ) { angle = angle -0.1; diametr1 = diametr1 -0.0015; diametr2 = diametr2 - 0.0015; if (angle == 1.0000000000000133) { t.stop(); } } repaint(); }
}
|
а во втором рисуется шарик который движется по этой спирали | Код | import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D;
import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer;
public class Ball extends JPanel implements ActionListener { Timer timer; // int x = 1; float alpha = 1; int wqe; private Integer x = 1, y, nextX, nextY; private Double centerX, centerY, deltaX, deltaY, radius, a, b, angle = 0.0; double diametr1 = 20, diametr2 = 20;
public Ball() { timer = new Timer(8, this); timer.setInitialDelay(190); timer.start(); }
public void paint(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g;
int w = (int) getSize().getWidth(); int h = (int) getSize().getHeight(); a = 1.0; b = 0.3; radius = a + b * angle; deltaX = radius*Math.cos(Math.PI*angle/180); deltaY = radius*Math.sin(Math.PI*angle/180); nextX = (int) (w/2 + deltaX); nextY = (int) (h/2 - deltaY); g2d.fillOval(nextX -10, nextY - 10, (int) diametr1, (int) diametr2); w = nextX; h = nextY; }
public void actionPerformed(ActionEvent e) { angle = (Double) (angle +0.4); System.out.println(angle); diametr1 = diametr1 + 0.01; diametr2 = diametr2 + 0.01; repaint(); } }
|
НУ и собственно вопрос состоит в том, как расположить эти компоненты на фрейме, так чтобы эти рисовалки накладывались друг на друга(т.е. было видно оба рисования), ну или может использовать какие нибудь другие компоненты. Ну или может кто то подскажет свой способ реализации шарика движущегося по спирали и рисующего ее. Заранее спасибо. Это сообщение отредактировал(а) iiukyr4uk - 14.4.2013, 13:30
|