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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование фигуры во всех направлениях 
:(
    Опции темы
Sadness
Дата 20.12.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще один вопрос smile 
В апплете что ниже, рисовать фигуру можно только в двух направлениях (слева на право и сверху в низ). Подскажыте пожплуйста как реализовать возможность рисовать во всех направлениях.


Код

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

/**
 * @author Sadness
 */
public class DrawApp extends JApplet {

    public void init() {
        DrawPanel pDraw = new DrawPanel();
        this.add(pDraw);
    }
}

class DrawPanel extends JPanel {

    public DrawPanel () {

        shapes = new ArrayList<Ellipse2D>();
        addMouseListener(new CoordinateListener());
        addMouseMotionListener(new ChangeCoordinateListener());
    }

      public void add (
            double x, double y,
            double w, double h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;

        ellipse = new Ellipse2D.Double (x, y, (w - x), (h -y));
        shapes.add(ellipse);

        repaint();
    }

    public void paintComponent(Graphics g) {

        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        for (int ix = 0; ix < shapes.size(); ix++) {
             g2.fill(shapes.get(ix));
        }
     }

  private class CoordinateListener extends MouseAdapter {

          public void mousePressed(MouseEvent event) {
              x = event.getX();
              y = event.getY();
          }

          public void mouseReleased(MouseEvent event) {

                  w = tempX;
                  h = tempY;
                  add(x, y, w, h);
                  repaint();
          }
    }

    private class ChangeCoordinateListener extends MouseMotionAdapter {

          public void mouseDragged(MouseEvent event) {

              tempX = event.getX();
              tempY = event.getY();

              // тут делаю передосмотр раземра фигуры
              Graphics g = getGraphics();
              Graphics2D g2 = (Graphics2D)g;
              el = new Ellipse2D.Double(x, y, (tempX - x), (tempY - y));
              g2.setStroke(new BasicStroke(3));
              g2.draw(el);

            repaint();

          }
    }

  private double x, y, w, h;     // координаты
  private double tempX, tempY;   // для хранения измен. координат
  private ArrayList<Ellipse2D> shapes;  // массив фигур
  private Ellipse2D ellipse;
  private Ellipse2D el;
}



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

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

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


 




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


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

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