📄 histogram.java
字号:
package main;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import main.myClass.*;
public class Histogram extends JPanel implements Observer{
myHashtable result;
ResultPanel parent;
int width,height,step,degree,size;
myGraphics my=new myGraphics();
boolean first;
Point zero;
public Histogram(ResultPanel rs){
parent=rs;
((Observable)rs).addObserver(this);
step=60;
setBackground(Color.white);
}
public void init(){}
public void update(Observable ob,Object o){
result=((ResultPanel)ob).result;
size=result.size();
repaint();
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
zero=new Point((getSize().width-step*(size+1))/2,250);
g.setColor(Color.white);
g.fillRect(0,0,getSize().width,getSize().height);
g.setColor(Color.black);
if(result!=null){
long max=Long.parseLong(result.getValue(size-1));
int length;
my.drawArrow(g,zero.x,zero.y,getSize().width-zero.x,zero.y);
my.drawArrow(g,zero.x,zero.y,zero.x,zero.y-220);
int count=1;long max1=max;
while((max1=max1/10)>=1) count++;
int temp=(int)(max/10);
for(int i=0;i<=10;i++){
g.drawString(String.valueOf(temp*i),zero.x-7*count,zero.y-20*i);
g.drawLine(zero.x,zero.y-20*i,zero.x+3,zero.y-20*i);
}
zero=new Point(zero.x+step-20,zero.y);
for(int i=0;i<size;i++){
String name=result.getKey(i);
String time=result.getValue(i);
length=(int)(200*Long.parseLong(time)/max);
my.fillHistogram(g,parent.color[i],zero.x+step*i,zero.y,20,length,4);
g.drawString(name,zero.x+step*i,zero.y+15);
g.drawString(time,zero.x+step*i,zero.y-length-10);
}
}
else{
g.drawString("数据还没有处理完毕",getSize().width/2-50,getSize().height/2);
}
}
public Dimension getPreferredSize(){
return new Dimension(600,280);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -