下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康幫扶報(bào)告范文大全
- 2024年中國有機(jī)板材市場調(diào)查研究報(bào)告
- 企業(yè)員工管理制度呈現(xiàn)大全
- 模塊化機(jī)房運(yùn)維培訓(xùn)
- 上海工藝美術(shù)職業(yè)學(xué)院《成本計(jì)算與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海工商外國語職業(yè)學(xué)院《建筑力學(xué)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海工會(huì)管理職業(yè)學(xué)院《商務(wù)智能決策》2023-2024學(xué)年第一學(xué)期期末試卷
- DBJT45T 007-2019 公路工程建筑信息模型BIM施工應(yīng)用指南
- 手術(shù)中的抗生素使用指南
- 工廠安全課程設(shè)計(jì)
- 二年級安全教育期末測試題
- 2022電大《建筑材料(A)》期末試題及答案
- 團(tuán)隊(duì)合作能力和創(chuàng)新團(tuán)隊(duì)建設(shè)試題100分標(biāo)準(zhǔn)答案
- 22秋中傳媒《傳播學(xué)概論》作業(yè)考核答卷
- 商務(wù)英語視聽說知到章節(jié)答案智慧樹2023年山東外國語職業(yè)技術(shù)大學(xué)
- 西安東原地產(chǎn)品牌年度推廣方案
- C++程序設(shè)計(jì)智慧樹知到答案章節(jié)測試2023年咸陽師范學(xué)院
- 五年級上冊道德與法治課件-第8課第四課時(shí) 影響深遠(yuǎn)的漢字人教部編版
- GB/T 23604-2009鈦及鈦合金產(chǎn)品力學(xué)性能試驗(yàn)取樣方法
- 第1章 大數(shù)據(jù)可視化概述
- 2023年湖南交通職業(yè)技術(shù)學(xué)院教師招聘考試筆試題庫及答案解析
評論
0/150
提交評論