Страница 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