⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbaostock.java

📁 手机炒股的j2me源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
   版权声明
 
   本程序作者是 www.kbao.com 保留所有权利
 
   我们对于本软件不作任何保证, 不管是明确的表达还是隐含的推论. 
   本软件可用于任何目的, 包括商业目的, 我们不作任何限制和不承担任何责任.
   再分发本程序或者它的修改程序, 请保留本版权声明
 
   如果你对于本软件有任何修改,你可以访问我们的网站相关页面
   http://www.kbao.com/bbsite/bbsn/bbsview.php?bbsid=StockDev
   并将新的程序上传. 我们将非常欢迎和尊重你的努力.
  
*/

/*

   正好证券 Web 服务器是证券信息专用服务器软件, 广泛用于证券行情和资讯传播, 
   详细介绍见 http://www.kbao.com
   
   J2ME 扩展服务是正好证券 Web 服务器的一个扩展服务程序, 它提供了适合于 J2ME 程序
   使用的股票行情查询. 部分功能如下: 以 http://www.kbao.com:1680 为例

   最新行情 utf-8 编码	
   http://www.kbao.com:1680/j2me/bidst/SH600000
   内容格式: ( 以 \t 分隔数据项 以 \r\n 结束 )
   代码 名称 时间 前收 开 高 低 新 量 额 买1价 买1量 卖1价 卖1量 买2价 买2量 卖2价 卖2量 买3价 买3量 卖3价 卖3量
   
   最新行情 png 图像
   http://www.kbao.com:1680/j2me/bidsp/SH600000?scale=160_190

   今日分时走势 png 图像
   http://www.kbao.com:1680/j2me/mins/SH600000?scale=160_190&mask=cvy

   K 线图 png 图像
   http://www.kbao.com:1680/j2me/kdays/SH600000?scale=160_190&mask=cvy&ktype=10001

   排行榜 utf-8 编码
   http://www.kbao.com:1680/j2me/xlist/SHA?sort=1
   

   参数说明
   scale 图像规格 格式: scale=宽_高 可以根据机型调整,或者置于属性文件中.
   mask  画图选项 c-标题 v-成交量 y-刻度
   ktype K线周期  10001-日线  10002-周线   10003-月线   10004-年线
		  20001-5分钟 20002-15分钟 20003-30分钟 20004-60分钟
   sort  排序  1-价格 2-涨幅 3-成交 4-振幅  (-1 -2 -3 )-反序

*/

package kbaohttpstock ;

import java.io.*;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;


public class KbaoStock extends MIDlet implements CommandListener, HttpDataListener
{
	private Command ok_cmd    = new Command("确认", Command.OK, 1);
	private Command cancel_cmd= new Command("放弃", Command.CANCEL, 1);

	private Command enter_cmd = new Command("进入", Command.OK, 1);
	private Command exit_cmd  = new Command("退出", Command.EXIT, 1);
	private Command back_cmd  = new Command("返回", Command.BACK, 1);

	private Command fresh_cmd = new Command("刷新", Command.ITEM, 2);

	private Command select_cmd = new Command("增加到自选股", Command.ITEM, 2);

	private Command addnew_cmd = new Command("增加", Command.ITEM, 2);
	private Command delete_cmd = new Command("删除", Command.ITEM, 2);
	private Command clear_cmd = new Command("删除全部", Command.ITEM, 2);

	private Command move_first_cmd = new Command("移到最前", Command.ITEM, 2);
	private Command move_last_cmd = new Command("移到最后", Command.ITEM, 2);
	private Command move_up_cmd = new Command("移到前面", Command.ITEM, 2);
	private Command move_down_cmd = new Command("移到后面", Command.ITEM, 2);

	// 正好证券 Web 服务器 并附加 j2me 扩展服务

	private String host="www.kbao.com:1680"; // 中国K报
	private String j2me;//="http://www.kbao.com:1680/j2me"; // 中国K报
	
	private String mask ;
	private String scale ;
	private String scale_bidsp ;

	private String stocklist_rms ="KbaoStockList";

	private List   startlist ;
	private List   stocklist ;
	private List   opslist ;
	private List   marklist ;
	private List   sortypes ;
	private List   toplist ;

	private Form   editform	;
	private TextField editext ;

	private Form   cfgform	;
	private TextField cfgtext ;

	private Form   dataform ;
	private String url ;
	private String info_url ;

	private Displayable[] display_stack;
	private int display_stackp;

	

	private Display display;

	private Image  icon_box ;
	private Image  icon_cfg ;
	private Image  icon_stk ;
	private Image  icon_stka ;
	private Image  icon_bids ;
	private Image  icon_mins ;
	private Image  icon_kday ;

	String top_market[]={   "sha","上证 A股", 
				"shb","上证 B股",
				"shf","上证基金", 
				"shc","上证债券", 
				"sza","深证 A股", 
				"szb","深证 B股", 
				"szf","深证基金", 
				"szc","深证债券"
			};

	String sort_types[]={"2","-2","4","3"};
	
	int width, height ;



	public KbaoStock() 
	{

		try 
		{
		icon_box  = Image.createImage( "/box.png" );
		icon_cfg  = Image.createImage( "/cfg.png" );
		icon_stk  = Image.createImage( "/stk.png" );
		icon_stka = Image.createImage( "/stk.png" );
		icon_bids = Image.createImage( "/bids.png" );
		icon_mins = Image.createImage( "/mins.png" );
		icon_kday = Image.createImage( "/kday.png" );
		}
		catch( IOException e )
		{ 
			//System.out.println("没找到图像文件");	
		}

		//开始
		startlist = new List( "正好股票", List.IMPLICIT );
		startlist.setCommandListener( this );
		startlist.addCommand( enter_cmd );
		startlist.addCommand( exit_cmd );

		startlist.append( "自选股", icon_box );
		startlist.append( "排行榜", icon_box );
		startlist.append( "设  置", icon_cfg );

		//自选股
		stocklist = new List( "自选股", List.IMPLICIT );
		stocklist.setCommandListener( this );
		stocklist.addCommand( enter_cmd );
		stocklist.addCommand( back_cmd );
		
		stocklist.addCommand( addnew_cmd );
		stocklist.addCommand( delete_cmd );
		stocklist.addCommand( clear_cmd );

		stocklist.addCommand( move_first_cmd );
		stocklist.addCommand( move_last_cmd );
		stocklist.addCommand( move_up_cmd );
		stocklist.addCommand( move_down_cmd );

		//个股
		opslist = new List("600888 正好股份", List.IMPLICIT );
		opslist.setCommandListener( this );
		opslist.addCommand( enter_cmd );
		opslist.addCommand( back_cmd );

		opslist.append( "最新行情", icon_bids );
		opslist.append( "今日走势", icon_mins );
		opslist.append( "日 K  线", icon_kday );
		opslist.append( "周 K  线", icon_kday );
		opslist.append( "月 K  线", icon_kday );
		opslist.append( "年 K  线", icon_kday );
		opslist.append( "5 分钟线", icon_kday );
		opslist.append( "15分钟线", icon_kday );
		opslist.append( "30分钟线", icon_kday );
		opslist.append( "60分钟线", icon_kday );

		//排行榜 市场
		marklist = new List( "排行榜", List.IMPLICIT );
		marklist.setCommandListener( this );
		marklist.addCommand( enter_cmd );
		marklist.addCommand( back_cmd );

		for( int i=0; i<8; i++ )
		marklist.append( top_market[i*2+1], icon_box );


		//排行榜 类型
		sortypes = new List( "上证A股 排行榜", List.IMPLICIT );
		sortypes.setCommandListener( this );
		sortypes.addCommand( enter_cmd );
		sortypes.addCommand( back_cmd );

		sortypes.append( "涨幅", icon_box );
		sortypes.append( "跌幅", icon_box );
		sortypes.append( "振幅", icon_box );
		sortypes.append( "成交", icon_box );

		//排行榜
 		toplist = new List( "上证A股 涨幅", List.IMPLICIT );
		toplist.setCommandListener( this );
		toplist.addCommand( enter_cmd );
		toplist.addCommand( back_cmd );

		toplist.addCommand( select_cmd );


		//股票图形
		dataform = new Form( "600888 正好股份" );
		dataform.setCommandListener( this );
		dataform.addCommand( fresh_cmd );
		dataform.addCommand( back_cmd );

		//编辑
		editform = new Form("输入代码");
		editform.setCommandListener( this );
		editext = new TextField( null, null, 30, 0 );
		editform.append( editext );
		editform.addCommand( ok_cmd );
		editform.addCommand( cancel_cmd );

		{
		StringItem si = new StringItem("例如\r\n600000\r\nSH600000\r\nSH600000 浦发银行",null);
		editform.append( si );
		}

		//设置
		cfgform = new Form("设置");
		cfgform.setCommandListener( this );
		cfgtext = new TextField( "行情服务", null, 30, 0 );
		cfgform.append( cfgtext );
		cfgform.addCommand( ok_cmd );
		cfgform.addCommand( cancel_cmd );

		{
		StringItem si = new StringItem("例如\r\nwww.kbao.com:1680\r\n202.105.135.181:1680",null);
		cfgform.append( si );
		}

		//规划屏幕
		//scale ="scale=160_190"; // 画面  宽_高
		KbaoCanvas kc = new KbaoCanvas( );
		width = kc.getWidth( )-2;
		height = kc.getHeight( );
		if( height < 100 ) height = 100 ; // 上下可移动
		scale = "scale="+String.valueOf(width)+"_"+String.valueOf(height);
		scale_bidsp = "scale="+String.valueOf(width)+"_240" ;

		mask ="mask=v";
		//if( height > 140 ) mask = mask+"c";
		if( width  > 100 ) mask = mask+"y";

		display = Display.getDisplay(this);

		// 屏幕栈
		display_stackp=-1;
		display_stack = new Displayable[8] ;

		info_url = null ;

  	}


	//程序开始
	public void startApp() 
	{
		read_stocklist( );

		if( stocklist.size()==0 )
		{
			//System.out.println( "初始化列表");

			stocklist.append( "SH1A0001 上证指数", icon_stk );
			stocklist.append( "SZ399001 深证指数", icon_stk );
			stocklist.append( "SH600000 浦发银行", icon_stk );
			stocklist.append( "SZ000001 深发展A", icon_stk );
			
		}


		display.setCurrent( startlist );
		display_stack[ ++display_stackp ] = startlist ;

		j2me = "http://"+host+"/j2me";

	}

	//暂停
	public void pauseApp() { }

	//结束
	public void destroyApp(boolean unconditional) 
	{ 
		save_stocklist( );
	}

	//读取自选股
	private void read_stocklist( )
	{
		RecordStore rs ;

		try 
		{
			rs = RecordStore.openRecordStore( stocklist_rms, false ); 
		}
		catch( RecordStoreException e ) { return ; }
		
		try
		{
			int in = rs.getSize();
			for( int i=0; i<in; i++ )
			{
				byte[] b = rs.getRecord( i+1 );
				String s = bytes2string( b ); //new string( b, "utf8" );
				if( i==0 ) host = s ;
				else
				stocklist.append( s, icon_stk );
			}
		}
		catch( RecordStoreException e ){ }
		finally 
		{ 
			try 
			{
				rs.closeRecordStore() ;
			}
			catch( RecordStoreException e ){ }
		}
 
		//System.out.println( "数据库 正常开始");
	
	}

	//保存自选股
	private void save_stocklist( )
	{
		RecordStore rs ;

		try 
		{
			RecordStore.deleteRecordStore( stocklist_rms );
		}
		catch( RecordStoreException e ){ }
		
		int in = stocklist.size( );

		try 
		{
			rs = RecordStore.openRecordStore( stocklist_rms, true ); 
		}
		catch( RecordStoreException e ) { return ; }

		try
		{
			{
				String s = host;
				byte[] b = string2bytes( s ) ; // s.getBytes( "utf8" );
				rs.addRecord( b, 0, b.length )  ;
			}
			for( int i=0; i<in; i++ )
			{
				String s = stocklist.getString( i );
				byte[] b = string2bytes( s ) ; // s.getBytes( "utf8" );
				rs.addRecord( b, 0, b.length )  ;
			}
		}
		catch( RecordStoreException e ){ }
		finally 
		{ 
			try 
			{
				rs.closeRecordStore() ;
			}
			catch( RecordStoreException e ){ }
		}

		//System.out.println( "数据库 正常结束");


	}

	//命令操作
	public void commandAction(Command c, Displayable s) 
	{

		//开始
		if( s == startlist )
		{
			if ( c == exit_cmd ) 
			{
	    			destroyApp(false);
	    			notifyDestroyed();
				return ;
			} 

			int ci = startlist.getSelectedIndex( );
			if( ci == -1 ) return ;

			if( c == enter_cmd || c == ((List)s).SELECT_COMMAND )
			{

				if( ci == 0 )
				{
					display.setCurrent( stocklist );
					display_stack[ ++display_stackp ] = stocklist ;
				}
			
				if( ci == 1 )
				{
					display.setCurrent( marklist );
					display_stack[ ++display_stackp ] = marklist ;
				}

				if( ci == 2 )
				{
					cfgtext.setString( host );
					display.setCurrent( cfgform );
					display_stack[ ++display_stackp ] = cfgform ;
				}

				return ;

			}


			return ;
		}

		//自选股
		if( s == stocklist )
		{

			if( c == back_cmd )
			{	
				display.setCurrent( display_stack[ --display_stackp ] );
				return ;
			}

			if( c == addnew_cmd )
			{
				editext.setString("");
				display.setCurrent( editform );
				display_stack[ ++display_stackp ] = editform ;
				return ;
			}

			int ci = stocklist.getSelectedIndex( );
			if( ci == -1 ) return ;

			if( c == enter_cmd || c == ((List)s).SELECT_COMMAND )
			{
				opslist.setTitle( stocklist.getString( ci ) );
				display.setCurrent( opslist );
				display_stack[ ++display_stackp ] = opslist ;

				if( stocklist.getImage(ci) != icon_stka )
				{
					//分解代码
					String st = stocklist.getString( ci ) ;
					int sn = st.length() ;
					int cn = 0;
					for( ; cn<sn;cn++)
					{
						char cc = st.charAt(cn);
						if( cc>='0' && cc<='9' );
						else if( cc>='a' && cc<='z' );
						else if( cc>='A' && cc<='Z' );
						else break ;
					}
					if( cn < sn )
					st = st.substring( 0, cn );

					info_url = j2me + "/bidst/"+st;
				}
				return ;

			}

			if( c == delete_cmd )
			{
				stocklist.delete( ci );
				return ;
			}

			if( c == clear_cmd )
			{
				while( stocklist.size( ) >0 )
				stocklist.delete( 0 ); 
				return ;
			}

			if( c == move_first_cmd )
			{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -