📄 0013.htm
字号:
<html>
<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>用Java绘制K线</strong></big></p>
<div align="right">---摘自互联网</div>
<br>
---- 附:StockApplet.java <br>
<br>
import java.applet.*; <br>
import java.awt.*; <br>
import java.io.*; <br>
import java.net.*;<br>
public class StockApplet extends java.applet.Applet implements Runnable<br>
{ //以下是公用变量的声明部分<br>
int Move_Length=0,Move_Sum=0;<br>
String FileName,Name_Str,Content_Date;<br>
int SP[]=new int[2000];<br>
int KP[]=new int[2000];<br>
int JD[]=new int[2000];<br>
int JG[]=new int[2000];<br>
int Mid_Worth[]=new int[2000];<br>
String myDate[]=new String[2000];<br>
double CJL[]=new double[2000];<br>
double MaxCJL,MidCJL;<br>
Label label[]=new Label[10];<br>
int MaxWorth,MinWorth;<br>
int x_move0,x_move1,MaxLength=0;<br>
int x0,y0,X,Y,Record_Num;<br>
boolean Mouse_Move,Name_Change=true;<br>
int JX_Five1,JX_Five2,JX_Ten1,JX_Ten2;<br>
public void init()<br>
{<br>
TextField text1=new TextField();<br>
Thread M_pointThread=null;<br>
setLayout(null); //声明布局管理器<br>
this.setBackground(Color.white); //设置背景色<br>
this.setForeground(Color.black); //设定文字颜色<br>
for(int i=1;i< 10;i++) //以下循环用于向布局中添加标签<br>
{<br>
label[i]=new Label();<br>
this.add(label[i]);<br>
label[i].reshape(i*80-65,10,50,15);<br>
if(i==2){label[i].reshape(80,10,70,15);}<br>
if(i==7){label[i].reshape(510,10,80,15);}<br>
if(i >7){label[i].reshape((i-8)*490+45,380,70,15);}<br>
}<br>
FileName="000001"; //程序启动时的默认股票代码<br>
Name_Str="上证指数";<br>
this.add(text1); //向布局中添加文本框<br>
text1.reshape(150,385,70,20);<br>
text1.getText(); //取得文本框中输入的内容<br>
}<br>
public void start()<br>
{ //创建并启动多线程<br>
if (M_pointThread==null)<br>
{<br>
M_pointThread=new Thread(this);<br>
M_pointThread.start();<br>
}<br>
}<br>
public void run()<br>
{ //运行多线程<br>
Graphics M_graphics;<br>
M_graphics=getGraphics();<br>
M_graphics.setXORMode(Color.white);<br>
while(true) //绘制“十字”游标<br>
{<br>
try<br>
{<br>
if(Mouse_Move==true)<br>
{<br>
if(x0 >50 & x0< 600){M_graphics.drawLine(x0,30,x0,380);}<br>
if(y0 >30 & y0< 380){M_graphics.drawLine(50,y0,600,y0);}<br>
if(X >50 & X< 600){M_graphics.drawLine(X,30,X,380);}<br>
if(Y >30 & Y< 380){M_graphics.drawLine(50,Y,600,Y);}<br>
Mouse_Move=false;<br>
x0=X;<br>
y0=Y;<br>
}<br>
}catch(NullPointerException npe){} <br>
}<br>
}<br>
public boolean action(Event evt,Object arg) //监测事件<br>
{<br>
FileName=text1.getText(); //取得新文件名<br>
repaint(); <br>
//将各变量恢复初始状态<br>
Name_Change=true;<br>
Move_Length=0;<br>
Move_Sum=0;<br>
MaxLength=0;<br>
MaxCJL=0;<br>
return true;<br>
}<br>
public boolean keyDown(Event evt,int key) //检测键盘事件<br>
{<br>
if(key==10) //检测是否是回车键<br>
{<br>
Event event=new Event(text1,Event.ACTION_EVENT,"text1");<br>
deliverEvent(event);<br>
return true;<br>
}<br>
return false;<br>
}<br>
public boolean mouseDown(Event evt,int x_d,int y_d) //检测按下鼠标按键事件<br>
{ <br>
x_move0=x_d; //记录鼠标当前的横座标<br>
x0=x_d; //把当前座标传递给另一线程<br>
y0=y_d;<br>
return true;<br>
}<br>
public boolean mouseUp(Event evt,int x_up,int y_up) //检测释放鼠标按键事件<br>
{<br>
int Screen=520; //定义在页面上的显示区域<br>
x_move1=x_up; //记录鼠标当前的横座标<br>
Move_Length=((int)(x_move1-x_move0)/10)*10; //计算鼠标移动距离<br>
Move_Sum=Move_Sum+Move_Length;<br>
if(Move_Sum< 0){Move_Sum=0;} //控制K线的拖动范围<br>
if(Move_Sum >MaxLength-Screen){Move_Sum=MaxLength-Screen-10;}<br>
x0=x_up; //把当前座标传递给另一线程<br>
y0=y_up;<br>
MaxWorth=JG[Move_Sum];<br>
MinWorth=JD[Move_Sum];<br>
MaxCJL=CJL[Move_Sum];<br>
//以下循环用于查找页面显示区域内的最高、最低值及成交量<br>
for(int i=Screen+Move_Sum;i >Move_Sum;i-=10) <br>
{<br>
if(MaxWorth< JG[i]){MaxWorth=JG[i];}<br>
if(MinWorth >JD[i]){MinWorth=JD[i];}<br>
if(MaxCJL< CJL[i]){MaxCJL=CJL[i];}<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>
repaint();<br>
return true;<br>
}<br>
public boolean mouseMove(Event evt,int x_m,int y_m) //检测鼠标移动事件<br>
{<br>
int Axsis,MNumberR;<br>
Mouse_Move=true;<br>
Axsis=560+Move_Sum-((int)(x_m/10))*10; //设定横座标范围<br>
if(Axsis >MaxLength){Axsis=MaxLength;}<br>
//在以下区域内,把鼠标当前横座标处的各种股票参数显示在相应的标签上<br>
if(x_m >50&x_m< 600) <br>
{<br>
label[2].setText(myDate[Axsis]);<br>
label[3].setText(String.valueOf((float)KP[Axsis]/100));<br>
label[4].setText(String.valueOf((float)JG[Axsis]/100));<br>
label[5].setText(String.valueOf((float)JD[Axsis]/100)); <br>
label[6].setText(String.valueOf((float)SP[Axsis]/100));<br>
label[7].setText(String.valueOf((int)CJL[Axsis]));<br>
label[8].setText(myDate[510+Move_Sum]);<br>
MNumberR=Move_Sum;<br>
if(Move_Sum >30){MNumberR=Move_Sum-30;}<br>
label[9].setText(myDate[MNumberR]);<br>
X=x_m; //把当前座标传递给另一线程<br>
Y=y_m;<br>
}<br>
return true;<br>
}<br>
public void stop() //当页面关闭或转向其他页面时,释放系统资源<br>
{<br>
if (M_pointThread!=null)<br>
{<br>
M_pointThread.stop();<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -