📄 imagecanvas.java
字号:
package ip.class3.cie;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
public class ImageCanvas extends Canvas{
/**
*
*/
private static final long serialVersionUID = 1L;
//要绘制包的数量
private int udpPacket;
private int tcpPacket;
private int icmpPacket;
private int arpPacket;
private String []packets;
//时间设置参数
private int timeCounter;
private boolean isSettime;
private Timer time;
public ImageCanvas() {
this.setSize(500, 500);
udpPacket = 0;
tcpPacket = 0;
icmpPacket = 0;
arpPacket = 0;
packets = new String[4];
packets[0] = "UDP packet";
packets[1] = "TCP packet";
packets[2] = "ICMP packet";
packets[3] = "ARP packet";
isSettime = false;
//时间设置一分钟
time = new Timer(1000, null);
time.start();
time.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
isSettime = true;
repaint();
}
});
}
/**
* 更新图片,用线程控制
*/
public void update(Graphics g) {
Color color = g.getColor();
g.setColor(new Color(0,250,0));
g.fillRect(200, 400-udpPacket, 50, udpPacket);
g.setColor(new Color(0,0,250));
g.fillRect(300, 400-tcpPacket, 50, tcpPacket);
g.setColor(new Color(250,0,0));
g.fillRect(400, 400-icmpPacket, 50, icmpPacket);
g.setColor(new Color(80,80,80));
g.fillRect(500, 400-arpPacket, 50, arpPacket);
g.setColor(color);
setTime(g);
}
/**
* 绘制图片,画出坐标
*/
public void paint(Graphics g) {
//画坐标线
g.drawLine(50, 400, 700, 400);
g.drawLine(50, 30, 50, 400);
//画两个箭头
g.drawLine(50, 30, 40, 40);
g.drawLine(50, 30, 60, 40);
g.drawLine(700, 400, 690, 390);
g.drawLine(700, 400, 690, 410);
g.drawString("数量", 70, 40);
//画时间
for(int i = 0; i < 360; ) {
g.drawLine(50, 400-i, 60, 400-i);
g.drawLine(50, 390-i, 55, 390-i);
g.drawString(""+i, 61, 400-i);
i += 20;
}
for(int i = 0; i < 400; ) {
g.setColor(Color.blue);
g.drawString(packets[i/100], 200+i, 415);
g.setColor(Color.red);
g.drawString("(千个)", 200+i, 430);
i += 100;
}
update(g);
}
/**
* 时间设置
* @param g
*/
public void setTime(Graphics g ) {
if(isSettime) {
g.setColor(new Color(250,0,250));
timeCounter += 6;
g.drawLine(48, 400-timeCounter, 50, 400-timeCounter);
}
isSettime = false;
}
/**
* 设置各种包的数量
* @param udpPacket
* @param tcpPacket
* @param icmpPacket
* @param arpPacket
*/
public void setPackeg(int udpPacket, int tcpPacket,
int icmpPacket, int arpPacket) {
this.udpPacket = udpPacket/10;
this.tcpPacket = tcpPacket/10;
this.icmpPacket = icmpPacket/10;
this.arpPacket = arpPacket/10;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -