Где определены методы в java.awt.Graphics? - PullRequest
3 голосов
/ 26 января 2012

Я много думал о создании собственного API Java3D для нескольких моих проектов.(Да, я видел API Java3D, предоставляемый Oracle.) Многие методы в java.awt.Graphics определены, такие как drawRect (), однако некоторые базовые функции, такие как drawLine (), являются абстрактными.Как можно создать объект Graphics (как в коде ниже), когда в Graphics.java нет реализации?

public void paint(Graphics g) {
    g.drawString("Hello World!");
}

Любая помощь или объяснение с благодарностью!Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Это зависит от реализации, но эти методы обычно реализуются изначально, чтобы они могли напрямую взаимодействовать с собственной оконной системой. Вы не можете создать экземпляр объекта Graphics, потому что конкретная реализация Graphics, которую вы хотели бы использовать, вероятно, является специфическим для реализации подтипом Graphics, который взаимодействует с собственной системой. Принуждение библиотек Java и разработчиков JVM к созданию этого объекта для вас избавляет вас от необходимости разбираться со злостью деталей на уровне ОС и обеспечивает общий, типобезопасный интерфейс для графического пакета.

Если вы хотите реализовать свой собственный пакет, вам, вероятно, придется использовать JNI для реализации графического пакета. Затем вы можете реализовать графику поверх OpenGL, DirectX или любой другой системы, которая вам нужна.

Надеюсь, это поможет!

0 голосов
/ 26 января 2012

[скопировано из моего комментария:] Они изначально реализованы JRE.

Вы можете создать буферизованное изображение и получить для него графические объекты:

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.getGraphics();   

Смотри также: http://www.coderanch.com/t/345202/GUI/java/Create-Graphics-object

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