如何用Java组织图形和绘图

时间:2012-08-16 18:29:43

标签: java swing graphics awt

我一直在使用Java图形编程,我觉得我理解它是如何工作的。

我不喜欢/尚未崩溃的一件事是如何管理在面板上绘制大量图形(形状,图像等)。

我目前正在阅读的所有书籍/教程都将您想要的所有绘图放在paintCompnents / paint函数中。前,

public void paint(Graphics g){
    //do stuff here....
}

事情是我有这么多我想绘制的,将一堆代码放在一个函数中是丑陋的,难以阅读,并且难以管理/编辑......

我理解OOP,但我是图形编程的新手。我应该如何管理我想要在画布上绘制的所有“数据”(JPanel to exact)。我正在调用paint(..)方法中的函数。前,

public void paint(Graphics g){
    drawCars(g, x,y,wid,len,etc,etc);
}

...然后

drawCars(Graphics g, int x, int y, int wid, etc etc){
    g.drawSomething(x,y,wid,len,)
    g.drawAnotherThing(x+90,y+60,etc, etc);
}

问题是在我的JPanel类中,我必须管理所有这些杂散函数。

这只是为了绘制“一页”的东西..我无法想象必须切换视图或游戏屏幕,我可以在页面上设置一些动画...

我只是在寻找如何组织java中paint()方法绘制的代码的方向,所以我不要疯狂地看着我以前的工作。任何教程,书籍(特别是如果它们是免费的),或者可能好的代码都会非常感激。

到目前为止,我发现的一切都是关于教你用图形/图形2D / java做什么“但我正在寻找专家建议的组织/风格提示..”

2 个答案:

答案 0 :(得分:5)

为您绘制的逻辑事物制作课程,如汽车。每个物体都知道它需要知道的所有东西,如位置,大小和颜色。如果让所有这些对象实现一个公共接口,您可以将它们放在一个列表中。当绘制它们的时候,你遍历列表并调用每个对象绘制方法。

除了该文档之外,绘图代码也很好,因此对于每个绘图语句,它很清楚它是实际绘图的哪个部分。

答案 1 :(得分:0)

将其泄露出来,然后调用一种可以绘制某个部分的方法。 如果你正在画一个房子,而不仅仅是drawRect,那么就是这样的

drawRoof(g);
drawDoor(g);

然后在这些你有像drawRect ...

这样的混乱的东西

这有用吗我可能会误解你在找什么......