📄 nettest.java
字号:
package SensorNode;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.geom.Line2D;
import java.awt.*;
/**
*
* @author WangJiayi
* 具有图形界面的传感器网络的测试程序,
* 其中包括一个显示镶有图形的面板的框架的类,
* 该类含有一个MAIN函数,首先创建一个固定大小的框架对象
* 然后再框架中绘制一个面板并显示该面板。
*
*/
public class NetTest {
/**
* @param args
*/
public static void main(String[] args) {
JFrame frame =new JFrame();
frame.setSize(900,700);
frame.setTitle("test");
frame.setLocation(100, 80);
Spanel panel =new Spanel();
frame.add(panel);
frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
/**
* 显示传感器网络图形的面板
* 其中创建了一个固定传感器数量的传感器网络,传感器的坐标是随机的
* 两个相邻的传感器之间是可以通信的。
* 在该网络可以设置信号的产生。
* 信号产生后立即为该信号寻找可以传送数据至datacollector的路径,
* 并在网络中用线连接起来。
*/
class Spanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 =(Graphics2D)g;
//网络的图表示
ArrayList<Node> l =new ArrayList<Node>();
//在图中添加传感器
for(int w=0;w<100;w++){
l.add(new Node(800*Math.random(),600*Math.random(),new ArrayList<Node>()));
}
/**
* 设置信号的坐标
*信号在网络图中的类型为Node
*设置完毕后将信号添加入网络中
*/
Signal signal =new Signal(200,200);
Node sg = new Node(signal.x,signal.y,new ArrayList<Node>());
l.add(sg);
/**
* 设置接收器
* 类似于以上的信号的设置
*/
Node datacollector =new Node(800,300,new ArrayList<Node>());
l.add(datacollector);
//为网络中的每个节点寻找邻居
for(int u =0;u<l.size();u++)
for(int v=0;v<l.size();v++)
l.get(u).addNeighbor(l.get(v));
//在面板上绘制每一个传感器,信号,接收器除外
//信号显示为一个圆形的小圈
double a,b;
for(int m =0;m<l.size()-2 ;m++){
a =l.get(m).x;
b =l.get(m).y;
Ellipse2D circle =new Ellipse2D.Double();
circle.setFrameFromCenter(a,b,a+5,b+5);
g2.setPaint(Color.GREEN);
g2.fill(circle);
}
g2.setPaint(Color.BLACK);
//画一个接收器,一个大圈
Ellipse2D circle =new Ellipse2D.Double();
circle.setFrameFromCenter(datacollector.x,datacollector.y,
datacollector.x+15,datacollector.y+15);
g2.draw(circle);
//画一个信号,大圈
circle =new Ellipse2D.Double();
circle.setFrameFromCenter(sg.x ,sg.y,sg.x+25,sg.y+25);
g2.draw(circle);
//选路
Signal.path(sg, l);
//连接信号至接收器的过程
Node pointer =datacollector;
while(pointer.path !=null)
{
Line2D.Double line =new Line2D.Double(pointer.x,pointer.y,
pointer.path.x,pointer.path.y);
g2.draw(line);
pointer =pointer.path;
}
}
public static final int Mx = 10;
public static final int My = 10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -