рисование на панеле

 
0
 
Java
ava
iiukyr4uk | 14.04.2013, 13:50
Всем добрый день! Уважаемые форумчане, помогите пожалуйста! У меня есть 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();
  }
}




НУ и собственно вопрос состоит в том, как расположить эти компоненты на фрейме, так чтобы эти рисовалки накладывались друг на  друга(т.е. было видно оба рисования), ну или может использовать какие нибудь другие компоненты.

Заранее спасибо.
Comments (0)

Comments are not added

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit