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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с программой, Работа с потоками 
:(
    Опции темы
СерегаГоляков
  Дата 26.4.2010, 20:27 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

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



Помогите написать прогу, в кот есть один квадрат, вращается и прямолинейно летает в панели или текстфилде, отталкиваясь от стенок)
Как изменять скорость вращения при ударе о стенку сам разберусь.  smile 

Это сообщение отредактировал(а) СерегаГоляков - 26.4.2010, 20:29
--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
yeputons
Дата 26.4.2010, 21:29 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Flying extends JPanel {
  public static void main(String[] args) {
    JFrame fr = new JFrame("Flying square");
    fr.add(new Flying());
    fr.pack(); // Для подгона размеров
    fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fr.setVisible(true);
  }

  Timer tmr;
  final int w = 32, h = 16;
  int x, y, vx, vy;

  public Flying() {
    setPreferredSize(new Dimension(320, 240));
    setSize(getPreferredSize());
    x = y = 0; vx = 3; vy = 2;

    tmr = new Timer(25, new ActionListener() {
      public void actionPerformed(ActionEvent ev) {
        x += vx; y += vy;

        if (((x < 0) && (vx < 0)) ||
            ((x + w >= getWidth()) && (vx > 0))) { vx = -vx; x += vx; }
        if (((y < 0) && (vy < 0)) ||
            ((y + h >= getHeight()) && (vy > 0))) { vy = -vy; y += vy; }
        repaint();
      }
    });
    tmr.start();
  }

  public void paint(Graphics _g) {
    super.paint(_g);
    Graphics2D g = (Graphics2D)_g;

    g.setColor(Color.BLACK);
    g.drawRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.BLUE);
    g.drawRect(x, y, w, h);
  }
}

PM MAIL ICQ Skype   Вверх
СерегаГоляков
Дата 26.4.2010, 21:49 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

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



ОО вапче крутотень) ОГРОМНОЕ СПАСИБО!!!!  smile  smile 
А чиво значит:
Timer tmr;
 tmr = new Timer(25, new ActionListener() {...}
1) Это есть то как часто поток движения будет запускаться?! Типо вместо засыпания?

Еще вопросик,
2)Вот у мя есть другой класс:  РаботаетView extends FrameView{}
в кот есть JPanel1, и в кот я еще нарисовал кружок летающий.
Хочу в эту же JPanel1 прорисовывать этот квадрат. 
Где здесь что-что изменить чтоб рисовало именно в моем JPanel1 ??

Это сообщение отредактировал(а) СерегаГоляков - 26.4.2010, 22:11
--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
yeputons
Дата 26.4.2010, 22:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1)Создаём таймер - это невидимый компонент, который с заданной частотой (указывается в конструкторе в миллисекундах) бросает событие ActionEvent. Это сделано во избежание цикла с засыпанием. Я считаю таймеры лучшим решением, поскольку это системный компонент и система точно будет обрабатывать разные событие. При цикле с засыпанием неизвестно, что делает система в оставшийся период времени. Да и просто - для чего-то же таймеры создавались.

2)просто перенеси процедуру paint(Graphics _g) в свой JPanel1. или допиши в конец существующей, если такая есть.


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

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

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


 




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


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

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