Как создать массив Ellipse2D? - PullRequest
2 голосов
/ 17 июля 2011

У меня есть программа, с которой я работал: она берет данные от пользователя, выполняет с ним некоторые математические операции, а затем отображает эллипс на экране, когда новые данные вводятся, старые эллипсы исчезают, а новые заменяют их.Однако мне нужна программа, чтобы сохранить старый эллипс на экране, а также новые, чтобы я мог сравнивать размеры.Мое решение этого состоит в том, чтобы иметь его таким образом, чтобы при создании эллипса он сохранялся в массиве, а затем массив эллипса выводился на экран, он мне также нужен, чтобы пользователь мог очистить массив и начать все сначала.Однако я не могу заставить код работать.Не могли бы вы помочь?

Ниже приведен код, который я использовал для создания и рисования эллипса. Все используемые переменные являются просто числами.

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setPaint(Color.white);
   g2.draw(new Ellipse2D.Double(((Background.getWidth()) / 2) - (gblSemiMajaxis / 2), ((Background.getHeight()) / 2) - (gblsemiMinoraxis / 2), gblSemiMajaxis, gblsemiMinoraxis));
}

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Просто чтобы расширить ответ Иана Макларида:

// imports
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;

...

ArrayList<Ellipse2D> ellipseList = new ArrayList<Ellipse2D>();

public void createEllipse(double gblSemiMajaxis, double gblSemiMinoraxis) {
    Ellipse2D e = new Ellipse2D.Double(((Background.getWidth()) / 2) - (gblSemiMajaxis / 2), ((Background.getHeight()) / 2) - (gblSemiMinoraxis / 2), gblSemiMajaxis, gblSemiMinoraxis);
    ellipseList.add(e);
}

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setPaint(Color.white);

    for (Ellipse2D e : ellipseList) {
        g2.draw(e);
    }
}
0 голосов
/ 17 июля 2011

Я бы предложил дать вашему классу переменную-член типа ArrayList<Ellipse2D>.Когда ваш пользователь введет свои данные, создайте Ellipse2D и добавьте его в список.В вашей функции рисования вы можете перебирать список и рисовать каждый из эллипсов, которые вы уже создали.Когда пользователь хочет очистить все эллипсы, вы можете использовать метод ArrayList clear().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...