Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рисование на панеле 
:(
    Опции темы
iiukyr4uk
Дата 14.4.2013, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.4.2013

Репутация: нет
Всего: нет



Всем добрый день! Уважаемые форумчане, помогите пожалуйста! У меня есть 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
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.