📄 kbaostock.java
字号:
/*
版权声明
本程序作者是 www.kbao.com 保留所有权利
我们对于本软件不作任何保证, 不管是明确的表达还是隐含的推论.
本软件可用于任何目的, 包括商业目的, 我们不作任何限制和不承担任何责任.
再分发本程序或者它的修改程序, 请保留本版权声明
如果你对于本软件有任何修改,你可以访问我们的网站相关页面
http://www.kbao.com/bbs/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 do_cmd = new Command("操作", Command.OK, 1);
private Command ok_cmd = new Command("确认", Command.OK, 1);
private Command enter_cmd = new Command("进入", Command.ITEM, 1);
private Command fresh_cmd = new Command("刷新", Command.OK, 1);
private Command exit_cmd = new Command("退出", Command.EXIT, 2);
private Command cancel_cmd= new Command("放弃", Command.CANCEL, 2);
private Command back_cmd = new Command("返回", Command.BACK, 2);
// 正好证券 Web 服务器 并附加 j2me 扩展服务
private String host="http://www.kbao.com:1689/j2me"; // 中国K报
private String mask ;
private String scale ;
private String scale_bidsp ;
private String stocklist_rms ="KbaoStockList";
private List stocklist ;
private List opslist ;
private List marklist ;
private List sortypes ;
private List toplist ;
private List topslist ;
private Form editform ;
private TextField editext ;
private Form dataform ;
private String url ;
private Form hintform ;
private Displayable hintback ;
private Display display;
private Image icon_box ;
private Image icon_stk ;
private Image icon_stka;
private Image icon_bids ;
private Image icon_mins ;
private Image icon_kday ;
private Image icon_add ;
private Image icon_del ;
private Image icon_dela;
private Image icon_chg ;
private Image icon_2fst ;
private Image icon_2lst ;
String top_market[]={
"tfa","指数期货",
"twa","上市股票",
"twb","上柜股票",
"twc","债券凭证",
"twf","特别类股",
"twx","其它类股",
};
String sort_types[]={"2","-2","4","3"};
int width, height ;
public KbaoStock()
{
try
{
icon_box = Image.createImage( "/box.png" );
icon_stk = Image.createImage( "/stk.png" );
icon_stka = Image.createImage( "/stk.png" );
icon_add = Image.createImage( "/add.png" );
icon_bids = Image.createImage( "/bids.png" );
icon_mins = Image.createImage( "/mins.png" );
icon_kday = Image.createImage( "/kday.png" );
icon_del = Image.createImage( "/del.png" );
icon_dela = Image.createImage( "/dela.png" );
icon_chg = Image.createImage( "/chg.png" );
icon_2fst = Image.createImage( "/2fst.png" );
icon_2lst = Image.createImage( "/2lst.png" );
}
catch( IOException e )
{
//System.out.println("没找到图像文件");
}
display = Display.getDisplay(this);
stocklist = new List( null, List.IMPLICIT );
stocklist.addCommand( enter_cmd );
stocklist.addCommand( exit_cmd );
stocklist.setCommandListener( this );
opslist = new List(null, List.IMPLICIT );
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 );
opslist.append( " ", null );
opslist.append( "删除", icon_del );
opslist.append( "修改", icon_chg );
opslist.append( "移到最前", icon_2fst );
opslist.append( "移到最后", icon_2lst );
opslist.addCommand( do_cmd );
opslist.addCommand( back_cmd );
opslist.setCommandListener( this );
editform = new Form(null);
editext = new TextField( "输入代码", null, 20, 0 );
editform.append( editext );
editform.addCommand( ok_cmd );
editform.addCommand( cancel_cmd );
editform.setCommandListener( this );
dataform = new Form( null );
dataform.addCommand( fresh_cmd );
dataform.addCommand( back_cmd );
dataform.setCommandListener( this );
marklist = new List( "市场分类", List.IMPLICIT );
for( int i=0; i<6; i++ )
marklist.append( top_market[i*2+1], icon_box );
marklist.addCommand( enter_cmd );
marklist.addCommand( back_cmd );
marklist.setCommandListener( this );
sortypes = new List( "排行榜", List.IMPLICIT );
sortypes.append( "涨幅", icon_box );
sortypes.append( "跌幅", icon_box );
sortypes.append( "振幅", icon_box );
sortypes.append( "成交", icon_box );
sortypes.addCommand( enter_cmd );
sortypes.addCommand( back_cmd );
sortypes.setCommandListener( this );
toplist = new List( null, List.IMPLICIT );
toplist.addCommand( do_cmd );
toplist.addCommand( back_cmd );
toplist.setCommandListener( this );
topslist = new List(null, List.IMPLICIT );
topslist.append( "最新行情", icon_bids );
topslist.append( "今日走势", icon_mins );
topslist.append( "日 K 线", icon_kday );
topslist.append( "周 K 线", icon_kday );
topslist.append( "月 K 线", icon_kday );
topslist.append( "年 K 线", icon_kday );
topslist.append( "5 分钟线", icon_kday );
topslist.append( "15分钟线", icon_kday );
topslist.append( "30分钟线", icon_kday );
topslist.append( "60分钟线", icon_kday );
topslist.append( " ", null );
topslist.append( "增加到自选股", icon_add );
topslist.addCommand( do_cmd );
topslist.addCommand( back_cmd );
topslist.setCommandListener( this );
hintform = new Form(null);
hintform.addCommand( back_cmd );
hintform.setCommandListener( this );
//scale ="scale=160_190"; // 画面 宽_高
KbaoCanvas kc = new KbaoCanvas( );
width = kc.getWidth( )-1;
height = kc.getHeight( );
if( height < 100 ) height = 100 ; // 上下可移动
scale = "scale="+String.valueOf(width)+"_"+String.valueOf(height);
scale_bidsp = "scale="+String.valueOf(width)+"_238" ;
mask ="mask=v";
if( height > 140 ) mask = mask+"c";
if( width > 100 ) mask = mask+"y";
}
public void startApp()
{
stocklist.append( "排 行 榜", icon_box );
read_stocklist( );
if( stocklist.size()==1 )
{
//System.out.println( "初始化列表");
stocklist.append( "TFWTX99 指数现", icon_stk );
stocklist.append( "TW1101 台泥", icon_stk );
}
stocklist.append( "增加", icon_add );
stocklist.append( "全部删除", icon_dela );
display.setCurrent( stocklist );
}
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 = new String( b );
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( );
if( in <= 3 ) return ;
try
{
rs = RecordStore.openRecordStore( stocklist_rms, true );
}
catch( RecordStoreException e ) { return ; }
try
{
for( int i=1; i<in-2; i++ )
{
String s = stocklist.getString( i );
byte[] b = s.getBytes( );
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 == stocklist )
{
if ( c == exit_cmd )
{
destroyApp(false);
notifyDestroyed();
return ;
}
if( c == enter_cmd || c == ((List)s).SELECT_COMMAND )
{
int ci = stocklist.getSelectedIndex( );
if( ci == -1 ) return ;
if( ci == 0 )
display.setCurrent( marklist );
else if( ci == stocklist.size( )-1 )
{
while( stocklist.size( ) > 3 )
stocklist.delete( 1 );
}
else if( ci == stocklist.size( )-2 )
{
editext.setString("");
display.setCurrent( editform );
}
else
{
opslist.setTitle( stocklist.getString( ci ) );
display.setCurrent( opslist );
}
return ;
}
return ;
}
if( s == opslist )
{
if( c == back_cmd )
{
display.setCurrent( stocklist );
return ;
}
if( c == do_cmd || c == ((List)s).SELECT_COMMAND )
{
do_func( );
return ;
}
return ;
}
if( s == editform )
{
int ci = stocklist.getSelectedIndex( );
if( c == cancel_cmd )
{
if( ci == stocklist.size( ) - 2 )
display.setCurrent( stocklist );
else
display.setCurrent( opslist );
return ;
}
if( c == ok_cmd )
{
String a = editext.getString( );
if( ci == stocklist.size( ) - 2 )
{
stocklist.insert( ci, a, icon_stk );
display.setCurrent( stocklist );
}
else
{
stocklist.set( ci, a, icon_stk );
display.setCurrent( stocklist );
}
return ;
}
return ;
}
if( s == dataform )
{
if( c == back_cmd )
{
int ci = stocklist.getSelectedIndex( );
if( ci == 0 )
display.setCurrent( topslist );
else
display.setCurrent( opslist );
return ;
}
if( c == fresh_cmd )
{
StringItem si = new StringItem( null, "正在刷新..." );
dataform.insert( 0, si );
HttpData t = new HttpData( url, this );
t.tag = 0;
t.start();
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -