Страница 1 из 1

AWT draw Rectangle

Добавлено: 09 июл 2004, 17:56
Oscar
Ну и совсем глупый вопрос.
А как рисовать класс Rectangle?

1) У него нет метода draw
2) У класса Graphics нет метода draw(Rectangle rectangle)

В результате чего для рисования прямоугольника я делаю:

Код: Выделить всё

public void paint(Graphics g) 
{
  super.paint(g);
  r = new Rectangle(0,0,100,20);
  g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(), (int) r.getHeight());
}
Но это же ненормально, наверное !...
Ещё и методы get--- возвращают double, который приходится насильно приводить к int...

Чувствую, что что-то я делаю не так..

Добавлено: 13 июл 2004, 14:08
Ageless
//Например:
public void paint(Graphics gr) {
Graphics2D g = (Graphics2D)gr;
g.draw(new Rectangle2D(x, y, w, h); //типа того
}
//чем так плохо?

Добавлено: 13 июл 2004, 14:33
Oscar
Ageless,
Действительно, то, что нужно )))
Спасибо! Постараюсь переделать ))

Добавлено: 15 июл 2004, 20:46
michael
super.paint(g);
А это вообще зачем? Вроде не нужно

Добавлено: 15 июл 2004, 22:16
Oscar
michael,
Да? Я сильно не задумывался ..
Но у меня Rectanglы на Canvasе рисуются, я думал эта строчка этот Canvas очищает, когда я всякие там Drag&Dropы делаю.
Я ошибался?

Добавлено: 16 июл 2004, 00:26
michael
почитай про полиморфизм и наследственость. В общих чертах когда ты пишеш СУПЕР ты обращяешся к методам и переменным объекта от которого наследуеш.

Добавлено: 16 июл 2004, 01:03
Oscar
michael, честно говоря, я очень догадывался об этом ...
Canvas наследуется от Сomponent.
И я предполагал, что метод paint, класса Component что-то полезно делает, если я ошибался - скажи мне об этом.

Добавлено: 16 июл 2004, 11:44
michael
метод paint запускается автоматически при запуске объектов наследуеший от абстрактного объекта window . скорее всего метод paint находящийся в window не содержит ни какой информации (хотя и не до конца уверен) в таком случае когда ты делаеш super.paint просто не делается никакой работы.

Добавлено: 16 июл 2004, 11:55
Oscar
Canvas.paint: "Applications that override this method need not call super.paint(g)" (c) java.sun.com

michael, ну в общем в данном случае Component.paint - вызывать не нужно, согласен.

Но я не понимаю, как связанно то, что метод запускается автоматически с вызовом метода paint родительского класса.
Да и кроме того, ни Component, ни Canvas, ни даже Rectanlge :-) не наследуются от обькта Window, который в свою очередь тоже не является абстрактным, а имеет даже парочку конструкторов ;-) ... Так что я вас немного не понял ...

Добавлено: 18 июл 2004, 12:59
michael
ты прав я перепутал с объектами frame и dialog