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

📄 piegraph.java

📁 本程序用来实现对网络流量的获取及分析功能。可以分离出tcp/udp报文,http协议
💻 JAVA
字号:
package jdumper.ui.graph;
import java.awt.*;
import javax.swing.*;

public class PieGraph extends JPanel
{
	private String[] labels;
	private long[] values;
	
	private Color[] colors={
		Color.blue,Color.green,Color.yellow,Color.red,Color.cyan,Color.pink,Color.orange
	};
	
	public PieGraph(String[] labels,long[] values){
		this.labels=labels;
		this.values=values;
	}
	
	public void changeValue(long[] values){
		this.values=values;
		repaint();
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		
		if(labels==null || values==null) return;
		
		int r=Math.min(getWidth(),getHeight())/2-20;
		int x=getWidth()/2,y=getHeight()/2;
		int sum=0;
		for(int i=0;i<values.length;i++) sum+=values[i];
		
		double startAngle=90.0;
		for(int i=0;i<values.length;i++){
			if(values[i]==0) continue;
			double angle=(double)values[i]*360.0/(double)sum;
			
			Color c=colors[i%colors.length];
			for(int j=0;j<i/colors.length;j++) c.darker();
			g.setColor(c);
			g.fillArc(x-r,y-r,r*2,r*2,(int)startAngle,(int)-angle);
			
			startAngle-=angle;
		}

		startAngle=90.0;
		for(int i=0;i<values.length;i++){
			if(values[i]==0) continue;
			double angle=values[i]*360.0/sum;

			int sx=(int)(Math.cos(2*Math.PI*(startAngle-angle/2)/360)*(double)(r+10));
			int sy=(int)(Math.sin(2*Math.PI*(startAngle-angle/2)/360)*(double)(r+10));
			g.setColor(Color.black);
			g.drawString(labels[i],x+sx,y-sy);
			
			startAngle-=angle;
		}
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(100,100);
	}
}

⌨️ 快捷键说明

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