java柱狀圖和餅狀圖的動(dòng)態(tài)實(shí)現(xiàn)_第1頁
java柱狀圖和餅狀圖的動(dòng)態(tài)實(shí)現(xiàn)_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、java 柱狀圖和餅狀圖的動(dòng)態(tài)實(shí)現(xiàn)import java.awt.*;import javax.swing.*;importjava.util.List;import java.util.ArrayList;importjava.util.Random;import java.lang.Math;public class Part extends JFrame public Part()this.setTitle(java 圖形程序設(shè)計(jì) );this.setSize(this.WIDTH,this.HEIGHT);this.setLocation(dim.width -this.WIDTH)

2、/ 2, this.HEIGHT) / 2);this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); this.add(panel); /得到當(dāng)前默認(rèn)分辨率java.awt.Dimension dim =java.awt.Toolkit.getDefaultToolkit().getScreenSize();public static void main(String args) Part main= new Part();/ 設(shè)定柱狀圖標(biāo)題Part.panel.setHistogramTitle( 資金 (元 ), 事項(xiàng) );/ 插入繪圖數(shù)據(jù),比

3、例動(dòng)態(tài)計(jì)算 MyPanel.insert( 教育 , 200.5f);MyPanel.insert( 科技, 200.5f);MyPanel.insert( 登月 , 300.2f);MyPanel.insert( 建設(shè), 400.1f); MyPanel.insert(a, 300.2f);/設(shè)置窗體位置,使其絕對居中(dim.height -MyPanel.insert(b, 100.5f);/ MyPanel.insert(c,100);/ MyPanel.insert(d, 300);/MyPanel.insert(b, 200);/ MyPanel.insert(c, 100);ma

4、in.setVisible(true);/定時(shí)器控制切換javax.swing.Timer timer = new Timer(1000, newjava.awt.event.ActionListener() public voidactionPerformed(java.awt.event.ActionEvent e) panel.repaint(); ); timer.start(); public static final int WIDTH = 800;public static final int HEIGHT = 600;static MyPanelpanel = new MyPa

5、nel();class MyPanel extends JPanel public MyPanel() this.xTitle = X; this.yTitle = Y; public MyPanel(String x, Stringy) this.xTitle = x;yTitle = y; public static void insert(String aElem, float aValue)elem.add(aElem);value.add(aValue); public void paintComponent(Graphics g) super.paintComponent(g);g

6、.clearRect(0, 0,Part.WIDTH, Part.HEIGHT);Part.HEIGHT - SIZE, Part.WIDTH - SIZE,SIZE - 8, Part.WIDTH - SIZE,SIZE - 6, Part.HEIGHT - SIZE,/titleg.drawString(this.yTitle, SIZE - 20, SIZE - 6);g.drawString(this.xTitle, Part.WIDTH - SIZE - 20, Part.HEIGHT -SIZE + 20);/動(dòng)態(tài)計(jì)算每個(gè)柱狀圖的false;drawHistogram(g);fla

7、g = else drawCaky(g);flag = true;/畫柱狀圖public void drawHistogram(Graphics g)g.setColor(Color.BLACK);g.setFont(newFont(隸書, Font. PLAIN, 15);g.drawString( 柱狀圖, SIZE + 200, 30);g.setColor(Color.GREEN);/豎線g.drawLine(SIZE, Part.HEIGHT - SIZE, SIZE,SIZE);/橫線g.drawLine(SIZE,if (flag)Part.HEIGHT - SIZE);/箭頭g

8、.setColor(Color.RED);int x1 = SIZE - 6, SIZE,SIZE + 6;int y1 = SIZE + 8, SIZE, SIZE + 8;g.drawPolyline(x1, y1, 3);int x2 = Part.WIDTH -Part.WIDTH - SIZE - 8;int y2 = Part.HEIGHT -Part.HEIGHT - SIZE + 6;g.drawPolyline(x2, y2, 3);int wigth = (int) (Part.WIDTH - 3 * SIZE) /java.awt.Color(Digit.getDigit

9、(255),Digit.getDigit(255),g.fillRect(wigth * (i * 2 + 1) + SIZE, Part.HEIGHT - SIZE -wigth, height);(value.size() * 2);/取數(shù)據(jù)中的最大值floatmax = 0;for (Float elem : value) if(max < Value() max =Value();/按比例計(jì)算高度double num = (double) (Part.HEIGHT - 2 *(SIZE + 10) / (double) max;/畫出每個(gè)柱

10、狀圖for (int i = 0; i < elem.size(); i+) int height =(int) (value.get(i) * num);/g.drawRect(wigth*(i*2+2),Main.HEIGHT-SIZE-height,wigth,height);g.setColor(newDigit.getDigit(255);/填充顏色height,SIZE + 20);/在豎線上畫出每項(xiàng)高度值g.drawString(Float.toString(value.get(i), SIZE - 40, Part.HEIGHT -SIZE - height +

11、5);/ 在豎線上畫出標(biāo)識(shí)點(diǎn) g.drawLine(SIZE, Part.HEIGHT -SIZE - height, SIZE + 3,Part.HEIGHT - SIZE - height); /畫餅圖public void drawCaky(Graphics g) g.setColor(Color.BLUE);g.setFont(newFont(楷體 _GB2312, Font.BOLD, 15);int wigth =(int) (Part.WIDTH - CAKY_WIDTH) / 2);int height(int) (Part.HEIGHT - CAKY_WIDTH) / 2);

12、g.drawOval(wigth, height, CAKY_WIDTH, CAKY_WIDTH);g.drawString( 餅圖, (int) (Part.WIDTH / 2) - 30, height - 50); intsum = 0;for (Float elem : value) sum += Value(); double part = 360d / sum;intcurrentAngle = 0;g.setColor(Color.RED);/畫出每項(xiàng)名字g.drawString(Float.toString(value.get(i),wigth * (i * 2

13、 + 1) + SIZE,Part.HEIGHT - SIZE - 20 - height);/在橫線上畫出每項(xiàng)名字g.drawString(elem.get(i), wigth * (i2 + 1) + SIZE,Part.HEIGHT -int half = (int) (CAKY_WIDTH + 50) / 2;int xFlag =1; int yFlag = -1; for (int i = 0; i < elem.size(); i+) int angle =(int) (part *value.get(i).intValue() + 0.5); g.setColor

14、(newjava.awt.Color(Digit.getDigit(255),Digit.getDigit(255),Digit.getDigit(255); g.fillArc(wigth, height, CAKY_WIDTH,CAKY_WIDTH, currentAngle,angle);/用于計(jì)算每個(gè)圓周的值if(currentAngle > 90 && currentAngle < 181) xFlag = 1; yFlag = -1; else if (currentAngle > 180&&

15、amp;amp;currentAngle < 271) xFlag = 1;yFlag = -1; else if (currentAngle > 270)xFlag = 1;yFlag =-1; / 計(jì)算每塊的標(biāo)識(shí)字符串坐標(biāo)int x = (int) (Math.cos(double) (currentAngle + angle / 2) *xFlag * half + half);int y = (int) (Math.sin(double) (currentAngle +angle / 2)yFlag * half + half);g.drawString(e

16、lem.get(i), x, y); currentAngle +=angle; public void setHistogramTitle(String y, String x)xTitle = x;yTitle = y;private boolean flag = true;private final int SIZE =100; private final int CAKY_WIDTH = 400; privateyTitle;private static List<String> elem = newMath.PI / 180)wigth - 40 +Math.PI / 180)height - 20 +final int STEP = 10;private String xTitle;private StringArrayList<String

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論