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

📄 page_multiquote.java

📁 一份java写的期货交易程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   Page_MultiQuote.java

package gnnt.MEBS.HQApplet;

import gnnt.MEBS.hq.ProductDataVO;
import gnnt.util.service.HQVO.CMDQuoteListVO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.PrintStream;
import java.util.Hashtable;

// Referenced classes of package gnnt.MEBS.HQApplet:
//            Page_Main, MenuListener, HQApplet, SendThread, 
//            MultiQuoteItemInfo, Common, RHColor, CodeTable, 
//            Arrays

class Page_MultiQuote extends Page_Main
{

    static byte flag = 0;
    private int iDynamicIndex;
    String strSortItem;
    int iHighlightIndex;
    int iStockRows;
    Font font;
    Font fontTitle;
    FontMetrics fm;
    int fontHeight;
    private static final int TITLE_GAP = 2;
    boolean bCanMove;
    byte currentStockType;
    byte isDescend;
    int iStart;
    private int iEnd;
    private Hashtable m_htItemInfo;
    private String m_strItems[];
    private int m_iStaticIndex;
    Menu menuStockRank;
    MenuItem menuMarket;
    MenuItem menuPageMinLine;
    MenuItem menuPageKLine;
    boolean m_bShowSortTag;

    private void AskForQuoteList()
    {
        CMDQuoteListVO packet = new CMDQuoteListVO();
        m_applet.sendThread.AskForData(packet);
    }

    private void setUserStockRequestPacket()
    {
    }

    public Page_MultiQuote(Rectangle _rc, HQApplet applet, byte currentStockType)
    {
        super(_rc, applet);
        strSortItem = "Code";
        iHighlightIndex = 0;
        font = new Font("宋体", 0, 16);
        fontTitle = new Font("宋体", 1, 16);
        bCanMove = true;
        isDescend = 0;
        iStart = 0;
        iEnd = 30;
        m_bShowSortTag = false;
        m_applet.iCurrentPage = 0;
        this.currentStockType = currentStockType;
        initStockFieldInfo();
        calculateRowsOfPage();
        iStart = 0;
        iEnd = iStockRows;
        flag = 0;
        setUserStockCode();
        getClass();
        AskForQuoteList();
        makeMenus();
        setMenuEnable(this.currentStockType, false);
    }

    void initStockFieldInfo()
    {
        m_htItemInfo = new Hashtable();
        m_htItemInfo.put("No", new MultiQuoteItemInfo("", 20, -1));
        m_htItemInfo.put("Name", new MultiQuoteItemInfo(m_applet.getShowString("Name"), 80, -1));
        m_htItemInfo.put("Code", new MultiQuoteItemInfo(m_applet.getShowString("Code"), 64, 0));
        m_htItemInfo.put("CurPrice", new MultiQuoteItemInfo(m_applet.getShowString("Newly"), 60, 1));
        m_htItemInfo.put("CurAmount", new MultiQuoteItemInfo(m_applet.getShowString("CurVol"), 60, -1));
        m_htItemInfo.put("SellPrice", new MultiQuoteItemInfo(m_applet.getShowString("SellPrice"), 60, -1));
        m_htItemInfo.put("SellAmount", new MultiQuoteItemInfo(m_applet.getShowString("SellVol"), 48, -1));
        m_htItemInfo.put("BuyPrice", new MultiQuoteItemInfo(m_applet.getShowString("BuyPrice"), 60, -1));
        m_htItemInfo.put("BuyAmount", new MultiQuoteItemInfo(m_applet.getShowString("BuyVol"), 48, -1));
        m_htItemInfo.put("TotalAmount", new MultiQuoteItemInfo(m_applet.getShowString("Volume"), 75, 9));
        m_htItemInfo.put("UpValue", new MultiQuoteItemInfo(m_applet.getShowString("ChangeValue"), 65, 2));
        m_htItemInfo.put("UpRate", new MultiQuoteItemInfo(m_applet.getShowString("ChangeRate"), 65, 3));
        m_htItemInfo.put("ReverseCount", new MultiQuoteItemInfo(m_applet.getShowString("Order"), 70, -1));
        m_htItemInfo.put("Balance", new MultiQuoteItemInfo(m_applet.getShowString("Balance"), 60, -1));
        m_htItemInfo.put("OpenPrice", new MultiQuoteItemInfo(m_applet.getShowString("Open"), 60, -1));
        m_htItemInfo.put("HighPrice", new MultiQuoteItemInfo(m_applet.getShowString("High"), 60, -1));
        m_htItemInfo.put("LowPrice", new MultiQuoteItemInfo(m_applet.getShowString("Low"), 60, -1));
        m_htItemInfo.put("YesterBalance", new MultiQuoteItemInfo(m_applet.getShowString("PreBalance"), 60, -1));
        m_htItemInfo.put("TotalMoney", new MultiQuoteItemInfo(m_applet.getShowString("Money"), 80, 6));
        m_htItemInfo.put("AmountRate", new MultiQuoteItemInfo(m_applet.getShowString("VolRate"), 50, 5));
        m_htItemInfo.put("ConsignRate", new MultiQuoteItemInfo(m_applet.getShowString("ConsignRate"), 50, 7));
        m_htItemInfo.put("Unit", new MultiQuoteItemInfo(m_applet.getShowString("Unit"), 40, -1));
        String strItemName = m_applet.getParameter("MultiQuoteName", "Name:;Code:;CurPrice:;CurAmount:;SellPrice:;SellAmount:;BuyPrice:;BuyAmount:;TotalAmount:;UpValue:;UpRate:;ReverseCount:;Balance:;OpenPrice:;HighPrice:;LowPrice:;YesterBalance:;TotalMoney:;AmountRate:;ConsignRate:;Unit:;");
        String strItemNames[] = Common.split(strItemName, 59);
        for(int i = 0; i < strItemNames.length; i++)
        {
            String str[] = Common.split(strItemNames[i], 58);
            if(str.length == 2 && str[1].length() > 0)
            {
                MultiQuoteItemInfo itemInfo = (MultiQuoteItemInfo)m_htItemInfo.get(str[0]);
                if(itemInfo != null)
                    itemInfo.name = str[1];
            }
        }

        String strItems = m_applet.getParameter("MultiQuoteItems", "No;Name;Code;CurPrice;CurAmount;SellPrice;SellAmount;BuyPrice;BuyAmount;TotalAmount;UpValue;ReverseCount;Balance;OpenPrice;HighPrice;LowPrice;YesterBalance;");
        m_strItems = Common.split(strItems, 59);
        m_iStaticIndex = Integer.parseInt(m_applet.getParameter("MultiQuoteStaticIndex", "3"));
        iDynamicIndex = m_iStaticIndex + 1;
    }

    private void initGraph(Graphics g)
    {
        fm = g.getFontMetrics(font);
        fontHeight = fm.getHeight();
        g.setFont(font);
    }

    private void calculateRowsOfPage()
    {
        int gap = 2;
        Graphics g = m_applet.getGraphics();
        fm = g.getFontMetrics(font);
        fontHeight = fm.getHeight();
        iStockRows = m_rc.height / (fontHeight + gap) - 1;
        if(iStockRows < 1)
            iStockRows = 25;
        iEnd = (iStart + iStockRows) - 1;
    }

    void Paint(Graphics g)
    {
        bCanMove = true;
        initGraph(g);
        calculateRowsOfPage();
        paintTitleItems(g);
        paintQuoteData(g);
        m_applet.EndPaint();
        paintHighlightBar();
    }

    void paintTitleItems(Graphics g)
    {
        int x = m_rc.x;
        int y = m_rc.y + fm.getAscent();
        g.setColor(HQApplet.rhColor.clMultiQuote_TitleBack);
        g.fillRect(m_rc.x, m_rc.y, m_rc.width, fontHeight);
        for(int i = 0; i < m_strItems.length; i++)
        {
            if(i > m_iStaticIndex && i < iDynamicIndex)
                continue;
            MultiQuoteItemInfo info = (MultiQuoteItemInfo)m_htItemInfo.get(m_strItems[i]);
            if(info == null)
                continue;
            String strName = info.name;
            if(m_bShowSortTag && strSortItem.equals(m_strItems[i]))
            {
                if(isDescend == 1)
                {
                    g.setColor(HQApplet.rhColor.clIncrease);
                    strName = strName + "↓";
                } else
                {
                    g.setColor(HQApplet.rhColor.clHighlight);
                    strName = strName + "↑";
                }
            } else
            {
                g.setColor(HQApplet.rhColor.clItem);
            }
            x += info.width;
            int strLen = fm.stringWidth(strName);
            g.drawString(strName, x - strLen, y);
            if(x > m_rc.x + m_rc.width)
                break;
        }

    }

    void paintQuoteData(Graphics g)
    {
        if(m_applet.m_quoteList.length == 0)
            return;
        g.setFont(font);
        int gap = 2;
        int x = m_rc.x;
        int y = m_rc.y + fontHeight + 2 + fm.getAscent();
        int count = iStockRows;
        if(m_applet.m_quoteList.length - iStart < iStockRows)
            count = m_applet.m_quoteList.length - iStart;
        for(int i = 0; i < count; i++)
        {
            int num = iStart + i;
            ProductDataVO data = m_applet.m_quoteList[num];
            if(data.code == null)
            {
                System.out.println("Code = null");
            } else
            {
                CodeTable stockTable = (CodeTable)m_applet.m_htProduct.get(data.code);
                String stockName = "-";
                if(stockTable != null)
                {
                    if(stockTable.sName != null)
                        stockName = stockTable.sName;
                    else
                        System.out.println("stockTable.sName = null");
                } else
                {
                    System.out.println(" stockTable = null ");
                }
                int iPrecision = m_applet.GetPrecision(data.code);
                float close = data.yesterBalancePrice;
                int strLen = 0;
                for(int j = 0; j < m_strItems.length; j++)
                {
                    if(j > m_iStaticIndex && j < iDynamicIndex)
                        continue;
                    MultiQuoteItemInfo info = (MultiQuoteItemInfo)m_htItemInfo.get(m_strItems[j]);
                    if(info == null)
                        continue;
                    x += info.width;
                    if(m_strItems[j].equals("No"))
                    {
                        String strText = String.valueOf(num + 1);
                        g.setColor(HQApplet.rhColor.clNumber);
                        strLen = fm.stringWidth(strText);
                        g.drawString(strText, x - strLen, y);
                    } else
                    if(m_strItems[j].equals("Name"))
                    {
                        String strText = stockName;
                        g.setColor(HQApplet.rhColor.clProductName);
                        strLen = fm.stringWidth(strText);
                        g.drawString(strText, x - strLen, y);
                    } else
                    if(m_strItems[j].equals("Code"))
                    {
                        String strText = data.code;
                        g.setColor(HQApplet.rhColor.clProductName);
                        strLen = fm.stringWidth(strText);
                        g.drawString(strText, x - strLen, y);
                    } else
                    if(m_strItems[j].equals("CurPrice"))
                        paintNumber(g, data.curPrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("Balance"))
                        paintNumber(g, data.balancePrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("UpValue"))
                    {
                        float up = close == 0.0F || data.curPrice == 0.0F ? 0.0F : data.curPrice - close;
                        paintNumber(g, up, "", m_strItems[j], 0, close, x, y);
                    } else
                    if(m_strItems[j].equals("UpRate"))
                    {
                        float upRate = close <= 0.0F || data.curPrice <= 0.0F ? 0.0F : ((data.curPrice - close) / close) * 100F;
                        paintNumber(g, upRate, "", m_strItems[j], 2, 0.0F, x, y);
                    } else
                    if(m_strItems[j].equals("YesterBalance"))
                        paintNumber(g, data.yesterBalancePrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("OpenPrice"))
                        paintNumber(g, data.openPrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("BuyPrice"))
                        paintNumber(g, data.buyPrice[0], "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("SellPrice"))
                        paintNumber(g, data.sellPrice[0], "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("BuyAmount"))
                        paintNumber(g, data.buyAmount[0], "", m_strItems[j], 0, close, x, y);
                    else
                    if(m_strItems[j].equals("SellAmount"))
                        paintNumber(g, data.sellAmount[0], "", m_strItems[j], 0, close, x, y);
                    else
                    if(m_strItems[j].equals("HighPrice"))
                        paintNumber(g, data.highPrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("LowPrice"))
                        paintNumber(g, data.lowPrice, "", m_strItems[j], iPrecision, close, x, y);
                    else
                    if(m_strItems[j].equals("TotalAmount"))

⌨️ 快捷键说明

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