1.需求描述:
根据DB里的信息:长*宽,在固定半径的圆里尽可能多的画满四边形,并且将所有四边形左下角坐标值存储在数组里。前提条件:将这个图形画到WEB上去,当用户在WEB上点其中一个四边形的时候,可以把这个四边形的背景变成黑色的,并且在对应数组里可以标记这个四边形被用户点成了黑色。如果这个四边形已经是黑色的,那就把这个四边形变成原来的颜色。
2遇到的问题:
我现在只能用APPLET去实现这些功能(附代码),我的意图是能够用SERVLET在WEB上去动态画图,因为我要用SSH去开发这个系统。
这里面涉及到四方面的问题:
A。能够动态在WEB上画图。
B。当用户在界面上点击任意一个四边形时,可以获取到它的坐标。
C。根据坐标,在数据中找到相应的四边形,把它的标志置成是黑色的,或是把这个标志去掉。
D。把数组中点成黑色的四边形存储到DB中去。
请精于此的人不吝赐教啊?
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Vector;
/*<applet code=Draw.class width=300 height=300>
</applet>*/
public class Draw extends Applet
{
Panel radioPanel;
drawPanel dPanel;
public void init()
{
dPanel=new drawPanel();
this.setLayout(new BorderLayout());
this.add("Center",dPanel);
}
}
class drawPanel extends Panel
{
int x1,y1;
int x2,y2;
Vector lines=new Vector();
public drawPanel()
{
this.setBackground(Color.orange);
this.addMouseListener(new Mou_Lis());
this.addMouseMotionListener(new MouMotion_Lis());
}
public void paint(Graphics g)
{
int np=lines.size();
for(int i=0;i<np;i++)
{
Rectangle p=(Rectangle)lines.elementAt(i);
if(p.width!=-1)
g.drawRect(p.x,p.y,p.width-p.x,p.height-p.y);
}
if(x2!=-1)
g.drawRect(x1,y1,x2-x1,y2-y1);
}
private class Mou_Lis extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
x2=-1;
}
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
lines.addElement(new Rectangle(x1,y1,x2,y2));
x2=-1;
repaint();
}
}
private class MouMotion_Lis extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
repaint();
}
}
}
1 楼
gjp00115
2009-11-09
注:
附件里是我用APPLET实现的效果图。
现在我的想法是能在WEB上去实现这个效果。
谢谢。
附件里是我用APPLET实现的效果图。
现在我的想法是能在WEB上去实现这个效果。
谢谢。
2 楼
flyliying
2009-11-10
可以试试jfreechart
3 楼
yye_javaeye
2009-11-10
a:页面端img的src为某个action,该action画图,并输出图像的stream
b:如果实在不想用applet,可以使用图片的热点,热点数据由你从画图时产生的数据动态生成
c:如果你画的四边形已经在数据库里存在的话,甚至可以不传坐标,直接传递四边形id到后台action就行
图片的刷新可以把图片丢到个小的iframe中,这样用户感觉就比较好了
b:如果实在不想用applet,可以使用图片的热点,热点数据由你从画图时产生的数据动态生成
c:如果你画的四边形已经在数据库里存在的话,甚至可以不传坐标,直接传递四边形id到后台action就行
图片的刷新可以把图片丢到个小的iframe中,这样用户感觉就比较好了
4 楼
presses
2009-11-10
用flex做,好像挺快。
5 楼
gjp00115
2009-11-10
十分感谢大家的热心回复。
大家有什么这方面的资料或者DEMO吗?
感谢大家。
大家有什么这方面的资料或者DEMO吗?
感谢大家。
6 楼
bill.end
2009-11-11
前几天做的,也许有帮助
7 楼
EldonReturn
2009-11-11
applet是不是太笨重了呢?
用js在页面上画,结束了传个xml格式的数据回去不就行了
用js在页面上画,结束了传个xml格式的数据回去不就行了
8 楼
gjp00115
2009-11-11
谢谢大家的热心。
我现在正在研究这几种方式:
1.Flex
2.JfreeChart.
3.SVG
4.VML
大家有什么好的建议,还请不吝赐教啊。。
谢谢。
我现在正在研究这几种方式:
1.Flex
2.JfreeChart.
3.SVG
4.VML
大家有什么好的建议,还请不吝赐教啊。。
谢谢。