аргументы и методы

 
 
 
Сообщения:4
здравствуйте друзья
создал класс для своего удобства использования графических примитивов.
в связи с этим у меня вопрос
можно ли убрать из аргументов методов Graphics g и добавить Color с
что бы в результате вывод методов был таким
пример:

G2d.drawPoint(100, 120, BLACK);


import javax.swing.*;
import java.awt.*;

public class G2d extends JPanel {
    static Graphics2D g2d;

    //рисуем точку в координатах x, y
    public static void drawPoint(Graphics g, int x, int y){
        Graphics2D g2d = (Graphics2D)g;
        g2d.drawRect(x, y, 0, 0);
    }

    //рисуем круг в координатах x, y с радиусом r
    public static void drawCircle(Graphics g, int x, int y, int r){
        Graphics2D g2d = (Graphics2D)g;
        g2d.drawOval(x-r, y-r, r*2, r*2);
    }

    //рисуем косой крест в координатах x, y с длиной перекладины l
    public static void drawCrossbuck(Graphics g, int x, int y, int l){
        Graphics2D g2d = (Graphics2D)g;
        g2d.drawLine(x-l, y-l, x+l, y+l);
        g2d.drawLine(x+l, y-l, x-l, y+l);
    }
}
 
 
Сообщения:457
может имеет смысл сделать G2d extends Graphics2D ?
чтобы это был полноценный класс, а не обрубок, и какие угодно методы могут его дополнять
 
 
Сообщения:4
я пробовал
выдаёт ошибку

Error:(4, 8) java: G2d is not abstract and does not override abstract method getFontRenderContext() in java.awt.Graphics2D
 
 
Сообщения:457
ну или наследоваться от того типа, который реально в метод передается в качестве Graphics g, а то там действительно абстракции (что Graphics, что Graphics2D)
 
 
Сообщения:4
а можно подробнее
учителей нет самому до всего приходится допирать.
 
 
Сообщения:1695
Сделайте метод
void setG2d(Graphics2D  g2d){
    this.g2d = g
}

И проставляйте его перед каждой прорисовкой, но это костыльный метод.

Лучше уберите все статические параметры и добавьте конструктор, а в самом коде делайте G2d g2d = new G2d(g); а потом и работайте с новым g2d
 
 
Сообщения:4
loptop:
Лучше уберите все статические параметры и добавьте конструктор, а в самом коде делайте G2d g2d = new G2d(g); а потом и работайте с новым g2d


конструктор в G2d ?
и в какое место G2d g2d = new G2d(g); в конструктор ?

если так то ругается на g
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет