📄 0013.htm
字号:
M_pointThread=null;<br>
}<br>
}<br>
public void paint(Graphics g) //绘图方法<br>
{<br>
if(Name_Change==true) //若改变了查询股票的代码<br>
{<br>
ReadData(); //则重新读取数据<br>
Name_Change=false;<br>
}<br>
PaintFrame(g); //调用绘制页面区域方法<br>
PaintData(g); //调用绘制K线数据方法<br>
x0=-1;<br>
y0=-1;<br>
}<br>
private void PaintFrame(Graphics g) //绘制页面区域方法<br>
{<br>
int nWidth =600;<br>
int nHeight=260;<br>
g.setColor(Color.white); <br>
g.fillRect(0,0,600,420); <br>
g.setColor(Color.black);<br>
g.fillRect(50,30,550,350);<br>
g.setColor(Color.white);<br>
g.drawLine(50,nHeight,nWidth,nHeight); //画出上下两区域间的分隔线<br>
g.setColor(Color.black); //设置字体颜色<br>
for(int i=1;i< 7;i++) //绘出纵座标中间数值<br>
{<br>
g.drawString(String.valueOf((float)Mid_Worth[i]/100),10,55+i*30);<br>
}<br>
g.drawString(String.valueOf((int)MaxCJL),2,270);<br>
g.drawString(String.valueOf((int)MidCJL),8,325);<br>
g.drawString("0",40,380);<br>
}<br>
public void PaintData(Graphics g) //绘制K线数据方法<br>
{<br>
int SPPoint[]=new int[2000]; <br>
int KPPoint[]=new int[2000];<br>
int JGPoint[]=new int[2000];<br>
int JDPoint[]=new int[2000];<br>
double CJLPoint[]=new double[2000];<br>
int Left_Start=40,reDraw=250; //设置绘图左边界及参数<br>
int i=0;<br>
int JxTemp1=0,JxTemp2=0;<br>
//以下语句在布局区域内绘出固定信息<br>
g.setColor(Color.red);<br>
g.drawString("牡丹江",5,45);<br>
g.drawString("信息港",5,60);<br>
g.setColor(Color.black);<br>
g.drawString("开盘",150,20);<br>
g.drawString("最高",230,20);<br>
g.drawString("最低",310,20);<br>
g.drawString("收盘",390,20);<br>
g.drawString("成交量",470,20);<br>
g.drawString("要查询其他股票,请输入股票代码,然后回车。",230,400);<br>
for(int N=MaxLength;N >=0;N-=10) //该循环用于在绘图区域内作图<br>
{ //计算股票各参数在绘图区域内要显示的相对值<br>
KPPoint[N]=((KP[N]-MinWorth)*200/(MaxWorth-MinWorth));<br>
SPPoint[N]=((SP[N]-MinWorth)*200/(MaxWorth-MinWorth));<br>
JGPoint[N]=((JG[N]-MinWorth)*200/(MaxWorth-MinWorth));<br>
JDPoint[N]=((JD[N]-MinWorth)*200/(MaxWorth-MinWorth));<br>
CJLPoint[N]=(CJL[N]*120/MaxCJL);<br>
for(int Num=0;Num< 5;Num++) //计算五日均线<br>
{<br>
JxTemp1=JxTemp1+(SPPoint[N+(Num+1)*10]);<br>
JxTemp2=JxTemp2+(SPPoint[N+Num*10]);<br>
}<br>
JX_Five1=JxTemp1/5;<br>
JX_Five2=JxTemp2/5;<br>
JxTemp1=0;<br>
JxTemp2=0;<br>
for(int Num=0;Num< 10;Num++) //计算十日均线<br>
{<br>
JxTemp1=JxTemp1+(SPPoint[N+(Num+1)*10]);<br>
JxTemp2=JxTemp2+(SPPoint[N+Num*10]);<br>
}<br>
JX_Ten1=JxTemp1/10;<br>
JX_Ten2=JxTemp2/10;<br>
JxTemp1=0;<br>
JxTemp2=0;<br>
if(N< 520+Move_Sum) //若位于显示区域内,则绘制K线<br>
{<br>
i=i+10; //横座标按10象素递增<br>
g.setColor(Color.white); <br>
g.drawLine(i+Left_Start,220-JX_Five1,i+Left_Start+10,220-JX_Five2);<br>
g.setColor(Color.yellow); <br>
g.drawLine(i+Left_Start,220-JX_Ten1,i+Left_Start+10,220-JX_Ten2);<br>
if(KP[N]< =SP[N]) //如果开盘价小于收盘价,则绘制阳线<br>
{ //绘制空心矩形<br>
g.setColor(Color.red); <br>
g.drawRect(i+Left_Start,reDraw-SPPoint[N],8,(SPPoint[N]-KPPoint[N]));<br>
//绘制最高、最低价<br>
if(SPPoint[N]==KPPoint[N]){g.drawRect(i+Left_Start,reDraw-SPPoint[N],8,1);}<br>
if(JGPoint[N] >SPPoint[N]){g.drawLine(i+Left_Start+4,reDraw-SPPoint[N], i+Left_Start+4,reDraw-JGPoint[N]);}<br>
if(JDPoint[N]< KPPoint[N]){g.drawLine(i+Left_Start+4,reDraw-JDPoint[N], i+Left_Start+4,reDraw-KPPoint[N]);}<br>
//在下方对应位置绘制成交量实心矩形<br>
g.fillRect(i+Left_Start,380-(int)CJLPoint[N],8,(int)CJLPoint[N]);<br>
}<br>
else //如果开盘价大于收盘价,则绘制阴线<br>
{ //绘制实心矩形<br>
g.setColor(Color.green);<br>
g.fillRect(i+Left_Start,reDraw-KPPoint[N],8,(KPPoint[N])-SPPoint[N]);<br>
//绘制最高、最低价<br>
g.drawLine(i+Left_Start+4,reDraw-KPPoint[N],i+Left_Start+4,reDraw-JGPoint[N]);<br>
g.drawLine(i+Left_Start+4,reDraw-SPPoint[N],i+Left_Start+4,reDraw-JDPoint[N]);<br>
//在下方对应位置绘制成交量实心矩形<br>
g.fillRect(i+Left_Start,380-(int)CJLPoint[N],8,(int)CJLPoint[N]); <br>
}<br>
if(i >540){N=0;} //如果显示区域已全部绘制完毕,则退出循环<br>
}<br>
}<br>
}<br>
public void ReadData() //读取股票数据的方法<br>
{<br>
int piont=1,Piont_Num;<br>
Integer tempInteger;<br>
Float tempFloat , Content_CJL;<br>
Float content_Num[]=new Float[5];<br>
int Count_Number[]=new int[10];<br>
String content;<br>
try <br>
{ //定位文件的URL地址<br>
URL urlc=new URL("http://127.0.0.1/temp/"+FileName+".txt");<br>
//打开数据流<br>
BufferedReader bis=new BufferedReader(new InputStreamReader(urlc.openStream()));<br>
Name_Str=bis.readLine(); //读取股票的汉字名称<br>
label[1].setText(Name_Str); //在相应标签内显示<br>
while((content=bis.readLine())!=null) //按行读取整个文本文件内容<br>
{<br>
Piont_Num=content.indexOf(' ',piont); //查找空格位置<br>
Content_Date=content.substring(1,Piont_Num); //取出日期字符串<br>
myDate[MaxLength]=Content_Date;<br>
piont=Piont_Num+1; <br>
for(int i=1;i< 5;i++) //从读入的一行中分离出对应数值<br>
{<br>
Piont_Num=content.indexOf(' ',piont);<br>
content_Num[i]=new Float(content.substring(piont,Piont_Num));<br>
piont=Piont_Num+1;<br>
}<br>
KP[MaxLength]=(int)(content_Num[1].floatValue()*100);<br>
JG[MaxLength]=(int)(content_Num[2].floatValue()*100);<br>
JD[MaxLength]=(int)(content_Num[3].floatValue()*100);<br>
SP[MaxLength]=(int)(content_Num[4].floatValue()*100);<br>
//最后取出成交量的数值<br>
Content_CJL=new Float(content.substring(piont,content.length()-1));<br>
CJL[MaxLength]=(int)Content_CJL.floatValue();<br>
piont=1; <br>
Piont_Num=0;<br>
MaxLength=MaxLength+10; //读取下一行(记录数以10为单位递增)<br>
}<br>
MaxWorth=JG[Move_Sum];<br>
MinWorth=JD[Move_Sum];<br>
MaxCJL=CJL[Move_Sum];<br>
//找出在页面布局内的最高、最低值及最大成交量<br>
for(Record_Num=540+Move_Sum;Record_Num >Move_Sum;Record_Num-=10)<br>
{<br>
if(MaxWorth< JG[Record_Num]){MaxWorth=JG[Record_Num];}<br>
if(MinWorth >JD[Record_Num]){MinWorth=JD[Record_Num];}<br>
if(MaxCJL< CJL[Record_Num]){MaxCJL=CJL[Record_Num];}<br>
}<br>
MidCJL=MaxCJL/2;<br>
for(int i=1;i< 7;i++) //计算中间值<br>
{<br>
Mid_Worth[i]=MinWorth+(MaxWorth-MinWorth)/7*(7-i);<br>
}<br>
bis.close(); //关闭数据流<br>
repaint(); <br>
}catch(NullPointerException npe){ //捕捉可能出现的异常<br>
}catch(IOException e){}<br>
}<br>
}<br>
<br>
<br>
__________________________<br>
我用javac StockApplet.java编译出来8个错误,想想也是,没人把完全正确的程序帖出来的,靠这个吃饭的,总要保留一点。<br>
</p>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -