用java如何生成曲线图,像网站上动态股票图一样。并且一定和后台数据库相连!!! 后台数据库的数据,通在过曲线图、饼形图、柱状图直观显示。比如有两种产品,每一种产品所占的比重、产品的合格率分布等...VB通过控件很容易做到,不知java如何作!!感谢您,swain()。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 applet+rmi applet+javabeanapplet+servlet 由Servlet操作数据库,并建立ServerSocket,然后Applet建立Socket,和Server端的Servlet连接,进行数据传递。 http://www.csdn.net/expert/topic/168/168069.shtm 这是我在http://www.csdn.net/expert/Topic/143/143687.shtm查到的一些 //////////////////////////////////////////////////////////////////////// // drawKLine // Function : 绘制 K 线 // Argument : g , width , pDayData , start , end // g , Graphics // width , 宽度 // pDayData , 逻辑值 // start , 数组开始索引 // end , 数组结束索引 // Return : no //////////////////////////////////////////////////////////////////////// public void drawKLine(Graphics g, int width, DayLine pDayData, int start, int end ) { try { if( m_boxRect == null ¦¦ pDayData == null) return; // end - start; // len ++ ; if( start >= end ¦¦ start < 0 ) return; if( end >= pDayData.m_point .length ) end = pDayData.m_point.length -1 ; boolean bIsUp = true; // g.setColor(PublicClass.m_FixTextColor); // CRect crect = new CRect(); int x[] = horiAxis.getScrValuesBySeralInteger( start, end ); Rectangle rect = new Rectangle() ; int rHalfWidth = width/2 ; for(int i = start ; i <= end ; i++) { rect.x = x[ i-start ] - rHalfWidth ; rect.width = 2*rHalfWidth ; if(pDayData.m_point[i].m_nOpenPrice <= pDayData.m_point[i].m_nClosePrice) { // 上涨 rect.y = vertAxis.getScrValue( pDayData.m_point[i].m_nClosePrice ); rect.height = vertAxis.getScrValue( pDayData.m_point[i].m_nOpenPrice); g.setColor( Resource.COLOR_UPCOLOR ); bIsUp = true ; } else { // 下跌 rect.y = vertAxis.getScrValue( pDayData.m_point[i].m_nOpenPrice); rect.height = vertAxis.getScrValue( pDayData.m_point[i].m_nClosePrice ); g.setColor( Resource.COLOR_DOWNCOLOR ); bIsUp = false ; } rect.height -=rect.y; int iScrMaxPrice = vertAxis.getScrValue( pDayData.m_point[i].m_nHighPrice ); int iScrMinPrice = vertAxis.getScrValue( pDayData.m_point[i].m_nLowPrice) + 1; g.drawLine( x[i-start], iScrMaxPrice, x[i-start], rect.y ); g.drawLine( x[i-start], rect.y+rect.height , x[i-start], iScrMinPrice); if(! bIsUp ) if( rect.width <=0 ¦¦ rect.height <=0 ) g.drawLine( rect.x, rect.y, rect.x+rect.width, rect.y+rect.height ); else g.fillRect( rect.x , rect.y, rect.width + 1, rect.height ); else // 上涨 if( rect.width <=0 ¦¦ rect.height <=0 ) g.drawLine( rect.x, rect.y, rect.x+rect.width, rect.y+rect.height ); else { //g.setColor(Color.black); //g.fillRect( rect.x, rect.y, rect.width, rect.height ); //g.setColor(PublicClass.m_UpColor); g.drawRect( rect.x, rect.y, rect.width, rect.height ); } } return; } catch(NullPointerException _ex) { return; } } 我刚做了一个通用的APPLET类,正是你所说的那种?要不要 java基础(单例) 父类对象引用子类对象 怎么通过int看枚举类型 怎么在批处理里面获得当前工程的路径阿? 哪位高人有核心技术电子版 请大家作一下题,并说出你的理由! 这个有关于C和JAVA通信的想法行不行得通? 在一个SESSION BEAN中调用另外一个SESSION BEAN,无法调用!在线等待! 放了一周没解决的mybatis的问题,求各位大神救命啊! 【java小白】程序在多线程中使用if和if else 遇到如下问题,请问这个该怎么理解?[ Java SE] 想试试自己,回答JAVA问题 请问在Java程序中能否直接读取ini文件,如何读取?
applet+javabean
applet+servlet
由Servlet操作数据库,并建立ServerSocket,然后Applet建立Socket,和Server端的Servlet连接,进行数据传递。
// drawKLine
// Function : 绘制 K 线
// Argument : g , width , pDayData , start , end
// g , Graphics
// width , 宽度
// pDayData , 逻辑值
// start , 数组开始索引
// end , 数组结束索引
// Return : no
////////////////////////////////////////////////////////////////////////
public void drawKLine(Graphics g, int width, DayLine pDayData, int start, int end )
{
try
{
if( m_boxRect == null ¦¦ pDayData == null)
return; // end - start;
// len ++ ; if( start >= end ¦¦ start < 0 )
return; if( end >= pDayData.m_point .length )
end = pDayData.m_point.length -1 ; boolean bIsUp = true;
// g.setColor(PublicClass.m_FixTextColor);
// CRect crect = new CRect(); int x[] = horiAxis.getScrValuesBySeralInteger( start, end ); Rectangle rect = new Rectangle() ;
int rHalfWidth = width/2 ; for(int i = start ; i <= end ; i++)
{
rect.x = x[ i-start ] - rHalfWidth ;
rect.width = 2*rHalfWidth ; if(pDayData.m_point[i].m_nOpenPrice <= pDayData.m_point[i].m_nClosePrice)
{
// 上涨
rect.y = vertAxis.getScrValue( pDayData.m_point[i].m_nClosePrice );
rect.height = vertAxis.getScrValue( pDayData.m_point[i].m_nOpenPrice);
g.setColor( Resource.COLOR_UPCOLOR );
bIsUp = true ;
}
else
{
// 下跌
rect.y = vertAxis.getScrValue( pDayData.m_point[i].m_nOpenPrice);
rect.height = vertAxis.getScrValue( pDayData.m_point[i].m_nClosePrice );
g.setColor( Resource.COLOR_DOWNCOLOR );
bIsUp = false ;
} rect.height -=rect.y; int iScrMaxPrice = vertAxis.getScrValue( pDayData.m_point[i].m_nHighPrice );
int iScrMinPrice = vertAxis.getScrValue( pDayData.m_point[i].m_nLowPrice) + 1; g.drawLine( x[i-start], iScrMaxPrice, x[i-start], rect.y );
g.drawLine( x[i-start], rect.y+rect.height , x[i-start], iScrMinPrice); if(! bIsUp )
if( rect.width <=0 ¦¦ rect.height <=0 )
g.drawLine( rect.x, rect.y, rect.x+rect.width, rect.y+rect.height );
else
g.fillRect( rect.x , rect.y, rect.width + 1, rect.height ); else // 上涨
if( rect.width <=0 ¦¦ rect.height <=0 )
g.drawLine( rect.x, rect.y, rect.x+rect.width, rect.y+rect.height );
else
{
//g.setColor(Color.black);
//g.fillRect( rect.x, rect.y, rect.width, rect.height );
//g.setColor(PublicClass.m_UpColor);
g.drawRect( rect.x, rect.y, rect.width, rect.height );
}
} return;
}
catch(NullPointerException _ex)
{
return;
}
}