sellhis股票平面图
生活随笔
收集整理的這篇文章主要介紹了
sellhis股票平面图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
效果圖如下:
?
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.JPanel; import javax.swing.JFrame;public class sellhis extends JPanel {static int Len;int leftMargine = 50;int rightMargine = 20;int topMargine = 80;int buttomMargine = 20;int width, height, w, h;int minStickLength = 3; //坐標的短刻度int majStickLength = 8; //坐標的長刻度int minStick = 10;int majStick;String title;String xTitle = "股票代碼";String xCode[];float yData[], xPce[];String MaxPce;boolean Mouse_Move;int x0, y0, X, Y, hx, hy;Label label[] = new Label[3];boolean mouse_move = false;public sellhis() {width = 1000; //this.getBounds().width;height = 800; //this.getBounds().height;w = width - leftMargine - rightMargine;h = height - topMargine - buttomMargine;setSize(width, height);Color bc = new Color(229, 229, 229);setBackground(bc);setLayout(null);for (int I = 0; I < 3; I++) {label[I] = new Label();label[I].setForeground(Color.blue);this.add(label[I]);if (I == 0) {label[I].setBounds(75, topMargine - 25, 60, 15); //reshape}if (I == 1) {label[I].setBounds(230, topMargine - 25, 80, 15); //reshape}if (I == 2) {label[I].setBounds(505, topMargine - 25, 60, 15); //reshape}}try {title = getTitle("200201"); //getParameter("itemmonth"));} catch (Exception e) {System.out.println("Param itemmonth error!");System.out.println(e);}try {xCode = Subicode("00002,00014,00019,00023,00041,00102,00113,00114,00129,00132,00142,00146,00179,00203,00213,00223,00341");//Subicode(getParameter("itemcode"));Len = xCode.length;hx = w / Len;} catch (Exception e) {System.out.println("Param itemcode error!");System.out.println(e);}try {yData = Substr("272950,193950,1015600,142700,1618500,671650,2453300,630150,28375,1827660,7700,75700,27375,3375600,47500,17500,17500");//getParameter("itemval"));} catch (Exception e) {System.out.println("Param itemval error!");System.out.println(e);}try {xPce = Substr("219,156,817,114,2302,540,1974,507,22,1471,6,60,22,4717,38,114,14");//getParameter("itempce"));MaxPce = getMaxVal(xPce);majStick = Integer.parseInt(MaxPce.substring(0, 1)) + 2; //取最大pce的最大整數} catch (Exception e) {System.out.println("Param itempce error!");System.out.println(e);}try {addMouseListener(new MouseAdapter() {public void mouseReleased(MouseEvent evt) { //檢測釋放鼠標按鍵事件setCursor(Cursor.getDefaultCursor());Point ioc = evt.getPoint();X = ioc.x; //把當前座標傳遞給另一線程Y = ioc.y;//repaint();}});addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent evt) {Point ioc = evt.getPoint();if ((ioc.x > leftMargine & ioc.x < w + leftMargine) &(ioc.y > topMargine & ioc.y < h + topMargine)) {setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));} else {setCursor(Cursor.getDefaultCursor());}}public void mouseMoved(MouseEvent evt) { //檢測鼠標移動事件Point ioc = evt.getPoint();X = ioc.x;Y = ioc.y;Graphics gten;gten = getGraphics();gten.setXORMode(Color.white);gten.setColor(Color.blue);int Axsis;if (ioc.x > leftMargine & ioc.x < w + leftMargine &ioc.y > topMargine & ioc.y < h + topMargine) {try {Axsis = (X - leftMargine) / hx; //設定橫座標范圍//在以下區域內,把鼠標當前橫座標處的各種股票參數顯示在相應的標簽上label[0].setText(xCode[Axsis]);label[1].setText(Float.toString(yData[Axsis]));float pcent = (xPce[Axsis] / 100);label[2].setText(Float.toString(pcent));} catch (Exception err) {}try {if (y0 > topMargine & y0 < h + topMargine) {gten.drawLine(leftMargine, y0, w + leftMargine,y0);}if (Y > topMargine & Y < h + topMargine) {gten.drawLine(leftMargine, Y, w + leftMargine,Y);}if (x0 > leftMargine & x0 < w + leftMargine) {gten.drawLine(x0, topMargine, x0,h + topMargine);}if (X > leftMargine & X < w + leftMargine) {gten.drawLine(X, topMargine, X, h + topMargine);}x0 = X;y0 = Y;} finally {gten.dispose();}}}});} catch (Exception e) {System.out.println("sellhis construct add mouse listener error!");System.out.println(e);}}public void paint(Graphics g) { //paintComponent()try {g.drawString("股票代碼:", 20, topMargine - 15);g.drawString("賣空成交金額:", 150, topMargine - 15);g.drawString("賣空成交金額占總賣空成交金額%:", 320, topMargine - 15);g.drawRect(leftMargine, topMargine, w, h); //矩形方框int x0, y0, x1, y1, dy;int totalStick = (majStick - 1) * minStick;x0 = leftMargine;dy = h / ((majStick - 1) * minStick);for (int I = 1; I <= totalStick; I++) {y0 = height - buttomMargine - I * dy;y1 = y0;x1 = x0 - minStickLength;if (I % minStick == 0) {x1 = x0 - majStickLength;g.drawString("" + ((I) / minStick) + "0%", x1 - 25, y0 + 5); //y軸刻度數字}g.drawLine(x0, y0, x1, y1); //y軸刻度標}for (int I = 0; I < Len; I++) {x0 = leftMargine + I * hx;hy = (int) ((xPce[I] / 100) * (h / ((majStick - 1) * 10)));y0 = height - buttomMargine - hy;float pcent = (xPce[I] / 100);Color pceCololr = new Color(153, 0, 153);g.setColor(pceCololr);g.setFont(new Font("Times New Roman", Font.PLAIN, 11));g.drawString(Float.toString(pcent), x0, y0 - 5); //在柱狀圖上繪制%if (I % 2 == 0) {g.setColor(Color.orange);} else {g.setColor(Color.red);}g.fillRect(x0, y0, hx, hy); //繪制柱狀圖//g.setColor(Color.red); //繪制股票代碼//g.setFont(new Font("Times New Roman",Font.PLAIN,10));//g.drawString(""+xCode[I],x0,height-topMargine+40);}Color titleColor = new Color(0, 64, 128);g.setColor(titleColor);g.setFont(new Font("monospaced", Font.BOLD, 20));g.drawString(title, 190, 40);} catch (Exception e) {System.out.println("sellhis paint error.");System.out.println(e);}}public static float[] Substr(String str) {int I = 0;StringTokenizer st = new StringTokenizer(str, ",");int len = st.countTokens();float[] val = new float[len];while (st.hasMoreTokens()) {val[I] = Integer.parseInt(st.nextToken());I++;}return val;}public static String[] Subicode(String str) {int I = 0;StringTokenizer st = new StringTokenizer(str, ",");int len = st.countTokens();String[] val = new String[len];while (st.hasMoreTokens()) {val[I] = st.nextToken();I++;}return val;}public static String getMaxVal(float[] Maxval) {int I;float result;result = Maxval[0];for (I = 0; I < Maxval.length; I++) {if (result < Maxval[I]) {result = Maxval[I];}}return Float.toString(result);}public String getTitle(String str) {String title;title = str.substring(0, 4) + "年" + str.substring(4, 6) + "月賣空股票統計";return title;}public int getLeftMargine() {return leftMargine;}public int getButtomMargine() {return buttomMargine;}public void setLeftMargine(int leftMargine) {this.leftMargine = leftMargine;}public void setButtomMargine(int buttomMargine) {this.buttomMargine = buttomMargine;}public static void main(String[] args) {JFrame frame = new JFrame();sellhis se = new sellhis();//se.setBounds(0,0,500,400);frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(se, BorderLayout.CENTER);frame.setVisible(true);frame.setExtendedState(JFrame.MAXIMIZED_BOTH);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();//se.updateUI();} }總結
以上是生活随笔為你收集整理的sellhis股票平面图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MemoryMonitor内存监视器
- 下一篇: StarField模拟星空