放假了跟着导师做NS2的项目,在运行leach协议的时候涉及到一个节点的设置,带我们小组的研究生让我们写个节点生成器,这样就可以省了自己定义节点X,Y坐标了。于是晚上回来就自己写了个,虽然比较丑陋,但是还是很实用的,主要用到了两个类,一个是随机位置产生类,以及调用这个类的显示类。
随机节点类:
RandomNode.java
package com.imis.node;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Random;
public class RandomNode {
public boolean generateNode(int nodeNum) {
Random random;
File file;
Writer writer = null;
try {
file = new File(nodeNum + "nodes.txt");
writer = new FileWriter(file);
for (int n = 0; n < 2 * nodeNum; n++) {
random = new Random();
String after = "";
String before = "";
for (int i = 0; i < 15; i++) {
after = after + random.nextInt(10);
}
before = before + random.nextInt(100);
if (n % 2 == 0) {
writer.write(before + "." + after + " ");
} else {
writer.write(before + "." + after + "\n");
}
}
writer.flush();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
显示类:
enerateGUI.java
package com.imis.node;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GenerateGUI extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
new GenerateGUI();
}
RandomNode randomNode;
JPanel jp1, jp2;
JTextField jtf;
JButton jb1, jb2;
JLabel jl1;
public GenerateGUI() {
this.setTitle("节点位置随机产生器");
// 设置窗体大小
this.setSize(300, 200);
// 窗体不可更改大小
this.setResizable(false);
this.setLayout(new GridLayout(2, 1));
// 获取屏幕宽度和高度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 设置窗体位置
this.setLocation((width - 300) / 2, (height - 200) / 2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
jp1 = new JPanel(null);
jp2 = new JPanel(null);
jtf = new JTextField();
jtf.setBounds(75, 50, 150, 23);
jl1 = new JLabel("请输入节点个数:");
jl1.setBounds(75, 20, 130, 23);
jb1 = new JButton("确定");
jb1.setBounds(80, 24, 60, 25);
jb1.addActionListener(this);
jb2 = new JButton("退出");
jb2.setBounds(150, 24, 60, 25);
jb2.addActionListener(this);
jp1.add(jl1);
jp1.add(jtf);
jp2.add(jb1);
jp2.add(jb2);
this.add(jp1);
this.add(jp2);
randomNode = new RandomNode();
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == jb1) {
if (jtf.getText().trim().equals("")) {
JOptionPane.showMessageDialog(this, "请输入节点个数!");
}
try {
int i = Integer.parseInt(jtf.getText().trim());
boolean success = randomNode.generateNode(i);
if (success) {
JOptionPane.showMessageDialog(this, "生成成功!");
jtf.setText("");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "请输入整数!");
jtf.setText("");
}
}
if (arg0.getSource() == jb2) {
System.exit(0);
}
}
}
运行完后会产生一个节点个数+nodes.txt,例如100nodes.txt。
分享到:
相关推荐
ssh代码自动生成器,很好用,经典可以少写很多代码!节省了很多时间!
最近因为没时间写工作日志被罚了点钱,忍无可忍之下,写了个自动生成工作日志的软件。把日常的工作内容都写进去,点几下就能自动生成完美的日志,让老板看个够!! 日志无忧功能很简单,添加项目,添加步骤,删除节点...
Unity3d MapMagic World Generator基于节点的程序和无限游戏地图生成器,图形上的每个节点表示地形或对象生成器:噪声,voronoi,混合,曲线,侵蚀,散射,森林等生态系统,一旦节点连接,魔法发生:游戏地图将创建...
图形上的每个节点代表一个地形或对象生成器:噪声、voronoi、混合、曲线、侵蚀、散射、森林等。一旦连接了节点,精彩便会发生:将在没有任何人工参与的情况下即可创建游戏地图。 无需付出艰苦的努力来雕刻和绘制...
createReadme 自动生成器使用节点
SmartCode是一个开放源码和模板驱动的代码生成工具。通过读取数据库的架构来定制代码生成。
论文研究-随机网络图象自动生成器的设计.pdf, 本文设计了一种随机产生网络拓扑结构及网络伴随函数的随机网络发生器(简称GRAN)。该GRAN系统可以在网络图形节点数或弧数初步已知的情况下随机等可能地产生每一个满足...
需要Unity 5.6.0或更高版本。 Shadero Sprite是Unity 5和2017的基于节点的实时着色器工具 描述 Shadero Sprite是一个实时的基于节点的着色器编辑器。 Shadero被认为是一个...- 修复添加同一节点时的自动变量订单问题
我的节点模块生成器 - WIP 一个效率工具。 此工具将基于模板为您创建一个新模块。 它还可以自动创建github项目以及在新创建的模块中初始化git。 npm install -g nmg nmg create awesome --inithub 通过在某处...
交易图生成器Before starting, please manually create folders data, output and logs in the root of the repo 文章。 交易图的大图生成器。 作为输出,您将获得: 带有交易的csv 3个CSV,一个用于客户,一个用于...
您无需知道几何节点即可使用它!只需拖放要使用的对象集合并更改设置即可获得所需的结果。该插件的美妙之处在于它在自动化和手动控制之间提供了平衡。虽然它简化了建筑创建过程,但它也允许您保留一些手工制作的建模...
Mybatis自动生成Dao(generator带中文数据库字段解释),下载后只需将generatorConfig.xml的数据库连接用户名和密码换成自己的,就可根据readMe生成dao和Mapper,不想带有中文数据库字段解释时间,只需注释掉...
我们利用GNS3生成的拓扑设置配置文件来自动生成节点(例如,路由器和交换机)配置文件,而无需访问其相应的控制台。 我们的实现还能够包括自定义设置,例如要使用的路由协议以及应应用哪种基线配置。 GNS3的此扩展...
自动摘录生成器 。 安装 $ npm install hexo-excerpt --save 此插件使用es6语法,请确保您的节点支持它。 特征 仍然有效! 如果您像我一样懒惰,则该插件会为您生成摘录,而不会破坏您的句子或代码! 如果未指定...
我们利用 GNS3 生成的拓扑设置配置文件自动生成节点(例如路由器和交换机)配置文件,而无需访问其相应的控制台。 我们的实现还能够包括自定义设置,例如要使用的路由协议以及应应用的基线配置。 这个 GNS3 扩展...
珍妮节点 0.11.2 及更高版本的 ES6(和谐)库,可帮助您使用具有节点样式回调的生成器,类似于好处: 无需包装任何东西或使用 fn.bind。... Genny 自动将resume作为最后一个参数传递给您的生成器。
基于应用程序文件夹结构的节点应用程序路由的框架不可知自动生成器。 迫使开发人员为其节点应用程序遵循合理的模块化结构。 与 Express、Restify 和 Hapi 兼容(目前已测试这些)。 为什么是路由创建者 路由创建者...
自动化投资组合生成器 自动投资组合生成器服务,可让您以最简单的方式创建投资组合。 它作为一个渐进式Web应用程序,构建在React Js中。 描述 大多数学生不知道如何自己开发,因为其中一些甚至都不来自网络开发或...
壮观的REST服务生成器。 它适用于所有类型的数据库,只需下载适配器并运行RESTacular! 安装 安装npm软件包 $ npm install node-restacular 数据库适配器 RESTacular使用 ORM,因此您可以自由使用(或编写)其...
代码生成节点编辑器一个图形节点编辑器,用于在Unity中使用.Net的CodeDOM生成C#脚本。 使用Unity的内置节点UI以及从Shader图形编辑器的实现开始构建。产品特点.cs文件生成编译检查变量,方法和类型自动补全