AWT draw Rectangle

Модератор: Absurd

Ответить
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Ну и совсем глупый вопрос.
А как рисовать класс 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...

Чувствую, что что-то я делаю не так..
Ageless
Сообщения: 7
Зарегистрирован: 13 июл 2004, 13:32

//Например:
public void paint(Graphics gr) {
Graphics2D g = (Graphics2D)gr;
g.draw(new Rectangle2D(x, y, w, h); //типа того
}
//чем так плохо?
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Ageless,
Действительно, то, что нужно )))
Спасибо! Постараюсь переделать ))
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

super.paint(g);
А это вообще зачем? Вроде не нужно
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

michael,
Да? Я сильно не задумывался ..
Но у меня Rectanglы на Canvasе рисуются, я думал эта строчка этот Canvas очищает, когда я всякие там Drag&Dropы делаю.
Я ошибался?
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

почитай про полиморфизм и наследственость. В общих чертах когда ты пишеш СУПЕР ты обращяешся к методам и переменным объекта от которого наследуеш.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

michael, честно говоря, я очень догадывался об этом ...
Canvas наследуется от Сomponent.
И я предполагал, что метод paint, класса Component что-то полезно делает, если я ошибался - скажи мне об этом.
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

метод paint запускается автоматически при запуске объектов наследуеший от абстрактного объекта window . скорее всего метод paint находящийся в window не содержит ни какой информации (хотя и не до конца уверен) в таком случае когда ты делаеш super.paint просто не делается никакой работы.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

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, который в свою очередь тоже не является абстрактным, а имеет даже парочку конструкторов ;-) ... Так что я вас немного не понял ...
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

ты прав я перепутал с объектами frame и dialog
Ответить