Programming Tutorials

(追記) (追記ここまで)

Using alerts and tickers in J2ME

By: Eric Giguere in J2ME Tutorials on 2008年07月10日 [フレーム]

This is a simple stock tracking MIDlet that demonstrates the use of alerts and tickers. Note that the stock values are generated randomly for example purposes. In the real world, you would use the HttpConnection class to obtain stock values from a web site. Note particularly how the alert text can be changed while the alert is still active.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class StockWatcher extends MIDlet {
 Display display;
 Ticker ticker = new Ticker( "" );
 Command exitCommand = new Command( 
 "Exit", Command.EXIT, 1 );
 Timer timer = new Timer();
 StockChecker checker = new StockChecker();
 TickerForm form = new TickerForm();
 Alert alert = new Alert( "Stock Alert!" );
 public StockWatcher() {
 display = Display.getDisplay( this );
 alert.setTimeout( Alert.FOREVER );
 }
 protected void destroyApp( boolean unconditional ) { }
 protected void startApp() {
 display.setCurrent( form );
 timer.schedule( checker, 0, 30000 );
 }
 protected void pauseApp() { }
 public void exit(){
 timer.cancel();
 destroyApp( true );
 notifyDestroyed();
 }
 // Display a simple form to hold the ticker
 class TickerForm extends Form implements CommandListener {
 public TickerForm(){
 super( "Stock Watch" );
 setTicker( ticker );
 addCommand( exitCommand );
 setCommandListener( this );
 }
 public void commandAction( Command c, Displayable d ){
 exit();
 }
 }
 
 // Check the stock values and put up an alert if
 // they're beyond certain limits....
 class StockChecker extends TimerTask {
 Random generator = new Random();
 int sybsValue = 20000;
 int sunwValue = 30000;
 int ibmValue = 40000;
 StringBuffer buf = new StringBuffer();
 public void run(){
 String values = getStockValues();
 ticker.setString( values );
 if( sybsValue < 18000 || sybsValue > 22000 ||
 sunwValue < 28000 || sunwValue > 32000 ||
 ibmValue < 38000 || ibmValue > 42000 ){
 alert.setString( values );
 }
 if( !alert.isShown() ){
 display.setCurrent( alert, form );
 }
 }
 private String getStockValues(){
 sybsValue = randomStockValue( sybsValue );
 sunwValue = randomStockValue( sunwValue );
 ibmValue = randomStockValue( ibmValue );
 buf.setLength( 0 );
 appendValue( "SYBS", sybsValue );
 appendValue( "SUNW", sunwValue );
 appendValue( "IBM", ibmValue );
 return buf.toString();
 }
 // Generate a random stock value... in the
 // real world you'd use HTTP to obtain the
 // stock value from a broker's website.
 private int randomStockValue( int oldVal ){
 int incr1 = ( generator.nextInt() % 2 );
 int incr2 = ( generator.nextInt() % 16 );
 if( incr1 < 1 ){
 oldVal -= incr1 * 1000;
 } else {
 oldVal += ( incr1 - 2 ) * 1000;
 }
 if( incr2 < 8 ){
 oldVal -= incr2 * 250;
 } else {
 oldVal += incr2 * 250;
 }
 return oldVal;
 }
 private void appendValue( String stock, int val ){
 buf.append( stock );
 buf.append( ' ' );
 buf.append( Integer.toString( val / 1000 ) );
 buf.append( '.' );
 buf.append( Integer.toString( val % 1000 ) );
 buf.append( ' ' );
 }
 }
} 



(追記) (追記ここまで)


Add Comment

JavaScript must be enabled for certain features to work
* Required information
1000

Comments

No comments yet. Be the first!
(追記) (追記ここまで)
(追記) (追記ここまで)

AltStyle によって変換されたページ (->オリジナル) /