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

📄 quotesmidlet.java

📁 手机游戏设计一书的源代码
💻 JAVA
字号:
package rms;

import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;
import java.util.Vector;

public class QuotesMIDlet
    extends MIDlet
    implements CommandListener {
  Display display = null;
// 主菜单对象
  List menu = null;
  List choose = null;
  TextBox input = null;
  Ticker ticker = new Ticker("Database Application");
  String quoteServer = "http://quote.yahoo.com/d/quotes.csv?s=";
  String quoteFormat = "&f=slc1wop";
  static final Command backCommand = new Command("Back", Command.BACK, 0);
  static final Command mainMenuCommand = new Command("Main", Command.SCREEN, 1);
  static final Command saveCommand = new Command("Save", Command.OK, 2);
  static final Command exitCommand = new Command("Exit", Command.STOP, 3);
  String currentMenu = null;

  // 股票数据
  String name, date, price;

  StockDB db = null;

  public QuotesMIDlet() {
  }

  public void startApp() throws MIDletStateChangeException {
    display = Display.getDisplay(this);
    // 打开一个存储股票信息的数据库文件
    try {
      db = new StockDB("stocks");
    }
    catch (Exception e) {}
    menu = new List("Stocks Database", Choice.IMPLICIT);
    menu.append("List Stocks", null);
    menu.append("Add A New Stock", null);
    menu.addCommand(exitCommand);
    menu.setCommandListener(this);
    menu.setTicker(ticker);

    mainMenu();
  }

  public void pauseApp() {
    display = null;
    choose = null;
    menu = null;
    ticker = null;

    try {
      db.close();
      db = null;
    }
    catch (Exception e) {}
  }

  public void destroyApp(boolean unconditional) {
    try {
      db.close();
    }
    catch (Exception e) {}
    notifyDestroyed();
  }

  void mainMenu() {
    display.setCurrent(menu);
    currentMenu = "Main";
  }

  public String tickerString() {
    StringBuffer ticks = null;
    try {
      RecordEnumeration enum = db.enumerate();
      ticks = new StringBuffer();
      while (enum.hasNextElement()) {
        String stock1 = new String(enum.nextRecord());
        ticks.append(Stock.getName(stock1));
        ticks.append(" @ ");
        ticks.append(Stock.getPrice(stock1));
        ticks.append("    ");
      }
    }
    catch (Exception ex) {}
    return (ticks.toString());
  }

  public void addStock() {
    input = new TextBox("Enter a Stock Name:", "", 5, TextField.ANY);
    input.setTicker(ticker);
    input.addCommand(saveCommand);
    input.addCommand(backCommand);
    input.setCommandListener(this);
    input.setString("");
    display.setCurrent(input);
    currentMenu = "Add";
  }

  //多线程股票侦测类
  class StockSpy
      implements java.lang.Runnable {

    //获取股票信息并且添加到数据库中
    public void run() {
      try {
        String userInput = input.getString();
        String pr = getQuote(userInput);
        db.addNewStock(pr);
        ticker.setString(tickerString());

      }
      catch (IOException e) {
      }
      catch (NumberFormatException se) {
      }
      mainMenu();

    }

  }

  public String getQuote(String input) throws IOException,
      NumberFormatException {
    String url = quoteServer + input + quoteFormat;
    StreamConnection c = (StreamConnection) Connector.open(url,
        Connector.READ_WRITE);
    InputStream is = c.openInputStream();
    StringBuffer sb = new StringBuffer();
    int ch;
    while ( (ch = is.read()) != -1) {
      sb.append( (char) ch);
    }
    return (sb.toString());
  }

//列出股票信息
  public void listStocks() {
    choose = new List("Choose Stocks", Choice.MULTIPLE);
    choose.setTicker(new Ticker(tickerString()));
    choose.addCommand(backCommand);
    choose.setCommandListener(this);
    try {
      RecordEnumeration re = db.enumerate();
      while (re.hasNextElement()) {
        String theStock = new String(re.nextRecord());
        choose.append(Stock.getName(theStock) + " @ " + Stock.getPrice(theStock), null);
      }
    }
    catch (Exception ex) {}
    display.setCurrent(choose);
    currentMenu = "List";
  }

  public void commandAction(Command c, Displayable d) {
    String label = c.getLabel();
    if (label.equals("Exit")) {
      destroyApp(true);
    }
    else if (label.equals("Save")) {
      if (currentMenu.equals("Add")) {

        // 添加记录到数据库中
        new java.lang.Thread(new StockSpy()).start();

        /*
                     try {
          String userInput = input.getString();
          String pr = getQuote(userInput);
          db.addNewStock(pr);
          ticker.setString(tickerString());
                     } catch(IOException e) {
                     } catch(NumberFormatException se) {
                     }
                     mainMenu();
         */

      }

    }
    else if (label.equals("Back")) {
      if (currentMenu.equals("List")) {
        // 返回主菜单
        mainMenu();
      }
      else if (currentMenu.equals("Add")) {
        // 返回主菜单
        mainMenu();
      }

    }
    else {
      List down = (List) display.getCurrent();
      switch (down.getSelectedIndex()) {
        case 0:
          listStocks();
          break;
        case 1:
          addStock();
          break;
      }

    }
  }
}

⌨️ 快捷键说明

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