Java 拓扑图构建_用JAVA画个简单的拓扑图
https://zhidao.baidu.com/question/151408808.html?qbl=relate_question_0&word=%D3%C3Java%BB%E6%D6%C6%BD%DA%B5%E3%D6%AE%BC%E4%B5%C4%CD%BC
问题描述:
用JAVA帮我画个简单的拓扑图,图形如图所示,要用java实现,麻烦写出代码,采用的话追加高分,谢谢
如果可以的话,帮我在图上随机生成参数,链路的参数(1~10),节点上2个参数,也是1~10
我要用这些参数来计算,最后生成一条路径。
生成的路径最好是动态生成的。
能做多少是多少,必有重谢!
Q-5369248
那个图我自己会画了,请教一下,在Eclipse里怎么关联两个JAVA程序?
先显示这个图,然后显示另外一个有路径的图(在此图基础上有一段路径加粗)。
在同一个窗口或者不在都行
解决方法:
如果需要的话留个邮箱,我把程序发给你。
晕~~我索性写个最短路径的给你吧,等着~
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
class Diagram_Panel extends JPanel {
private Rectangle btnNew = new Rectangle(10, 10, 82, 22);
private int state;
private Random rnd = new Random();
private int[][] vertices;
private int[][] params;
private int[][] linked;
public Diagram_Panel () {
setBackground(Color.WHITE);
addMouseMotionListener(new MouseMotionAdapter() {
@Override public void mouseMoved (MouseEvent me) {
if (me.getX() >= btnNew.x && me.getX() <= btnNew.x + btnNew.width && me.getY() >= btnNew.y && me.getY() <= btnNew.y + btnNew.height) {
if (state != 1) {
state
d39b
= 1;
repaint();
}
} else {
if (state != 0) {
state = 0;
repaint();
}
}
}
@Override public void mouseDragged (MouseEvent me) {
if (state == 2 || state == 1) {
if (me.getX() >= btnNew.x && me.getX() <= btnNew.x + btnNew.width && me.getY() >= btnNew.y && me.getY() <= btnNew.y + btnNew.height)
if (state != 2)
state = 2;
else
if (state != 1)
state = 1;
repaint();
}
}
});
addMouseListener(new MouseAdapter() {
@Override public void mousePressed (MouseEvent me) {
if (state == 1) {
state = 2;
newGraph();
}
}
@Override public void mouseReleased (MouseEvent me) {
if (me.getX() >= btnNew.x && me.getX() <= btnNew.x + btnNew.width && me.getY() >= btnNew.y && me.getY() <= btnNew.y + btnNew.height)
state = 1;
else
state = 0;
repaint();
}
});
}
private void mouseOver (Rectangle btn, String str, Graphics g) {
Color tmp = g.getColor();
g.setColor(Color.GRAY);
g.fillRect(btn.x, btn.y, btn.width+1, btn.height+1);
g.setColor(Color.WHITE);
g.drawLine(btn.x, btn.y, btn.x, btn.y+btn.height-1);
g.drawLine(btn.x, btn.y, btn.x+btn.width-1, btn.y);
g.drawString(str, btn.x+10, btn.y+15);
g.setColor(tmp);
}
private void mouseOff (Rectangle btn, String str, Graphics g) {
Color tmp = g.getColor();
g.setColor(Color.BLACK);
g.drawRect(btn.x+1, btn.y+1, btn.width, btn.height);
g.setColor(Color.WHITE);
g.fillRect(btn.x, btn.y, btn.width, btn.height);
g.setColor(Color.BLACK);
g.drawRect(btn.x, btn.y, btn.width, btn.height);
g.drawString(str, btn.x+10, btn.y+15);
g.setColor(tmp);
}
private void mouseDown (Rectangle btn, String str, Graphics g) {
Color tmp = g.getColor();
g.setColor(Color.DARK_GRAY);
g.fillRect(btn.x+1, btn.y+1, btn.width+1, btn.height+1);
g.setColor(Color.WHITE);
g.drawLine(btn.x+2, btn.y+btn.height+1, btn.x+btn.width+1, btn.y+btn.height+1);
g.drawLine(btn.x+btn.width+1, btn.y+2, btn.x+btn.width+1, btn.y+btn.height+1);
g.drawString(str, btn.x+11, btn.y+16);
g.setColor(tmp);
}
@Override public void paint (Graphics g) {
super.paint(g);
switch (state) {
case 0:
mouseOff(btnNew, "New Graph", g);
break;
case 1:
mouseOver(btnNew, "New Graph", g);
break;
case 2:
mouseDown(btnNew, "New Graph", g);
break;
}
for (int i=0; i
for (int j=i+1; j
if (linked[i][j] > 0) {
g.drawLine(vertices[i][0]+5, vertices[i][1]+5, vertices[j][0]+5, vertices[j][1]+5);
g.drawString(linked[i][j]+"", (vertices[i][0]+vertices[j][0])/2, (vertices[i][1]+vertices[j][1])/2);
}
g.setColor(Color.WHITE);
for (int i=0; i
g.fillOval(vertices[i][0], vertices[i][1], 10, 10);
g.setColor(Color.BLACK);
for (int i=0; i
g.drawOval(vertices[i][0], vertices[i][1], 10, 10);
g.drawString((char)(i+'A') + "(" + linked[i][0] + "," + linked[i][1] + ")", vertices[i][0]-5, vertices[i][1]-5);
}
}
public void newGraph () {
vertices = new int[rnd.nextInt(5)+3][2];
params = new int[vertices.length][2];
linked = new int[vertices.length][vertices.length];
for (int i=0; i
while (true) {
vertices[i][0] = rnd.nextInt((int)(getWidth()*0.6)) + 100;
vertices[i][1] = rnd.nextInt((int)(getHeight()*0.6)) + btnNew.height + 100;
int j = 0;
for (; j
if (Math.abs(vertices[j][0] - vertices[i][0]) < 50 && Math.abs(vertices[j][1] - vertices[i][1]) < 50)
break;
if (j == i)
break;
}
}
for (int i=0; i
for (int j=i+1; j
if (rnd.nextInt(100) > 20)
linked[i][j] = rnd.nextInt(10)+1;
for (int i=0; i
linked[i][0] = rnd.nextInt(10)+1;
linked[i][1] = rnd.nextInt(10)+1;
}
repaint();
}
}
public class Diagram extends JFrame {
public Diagram () {
super("Diagram -- shuangwhywhy");
setSize(600, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Diagram_Panel dp = new Diagram_Panel();
dp.setBackground(Color.WHITE);
setContentPane(dp);
setVisible(true);
dp.newGraph();
}
public static void main (String args[]) {
new Diagram();
}
}
运行结果截图为:
标签:
Java 拓扑图构建_用JAVA画个简单的拓扑图相关推荐
- java web构建_使用Java构建一个宁静的Web服务
java web构建 介绍 (Introduction) Due to its exponential growth, REST(Representational State Transfer) ha ...
- java gradle构建_在Gradle中为JPMS构建Java 6-8库
java gradle构建 通过提供Java 9 module-info.class了解如何使用Gradle构建支持JPMS( Java平台模块系统 )的Java 6-8库. 介绍 如果您需要JPMS ...
- java 新闻编辑_使用 Java 构建你自己的文本编辑器|Linux 中国
导读:有时候,除你自己外,没有人能制作你所梦想的工具.以下是如何开始构建你自己的文本编辑器. 本文字数:9393,阅读时长大约:12分钟 https://linux.cn/article-13038- ...
- java 推广海报_使用java画一张海报
PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. org.jsoup jsoup 1.11. ...
- java 分割一个_分割java
[java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...
- java武功秘籍_请问java全套内容都有什么呢?
我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...
- java 画笔粗细_用JAVA做个画笔,有画笔和橡皮功能就行。越简单越好
展开全部 新建一个java文件,取名叫做PaintJava.java 代码如下: import java.applet.*; import java.awt.*; import java.awt.ev ...
- bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道
字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...
- java robot 对象_用Java Robot对象实现服务器屏幕远程监视
用Java Robot对象实现服务器屏幕远程监视 作者:李鲁群 摘要: 有时候,在Java应用程序开发中,如:远程监控或远程教学,常常需要对计算机的屏幕进行截取,由于屏幕截取是比较接近操作系统的操作, ...
- java 持续交付_【Java架构:持续交付】一篇文章搞掂:Jenkins
1.1.使用yum安装JDK a.检查系统是否有安装open-jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示 ...
最新文章
- Visual Studio 配色方案
- frp + nginx 配置多人共用的http 内网穿透服务
- MongoDB高级——安全
- Linux shell标准输入,标准输出,错误输出
- python3 小工具
- Android开发/源码资源汇总
- redis增加auth
- 倍福TwinCAT 3 气缸动作程序编写
- Math类的常用函数总结
- 507「LibreOJ NOI Round #1」接竹竿-DP
- 计算机安全常用防护策略,新手必看
- python文件起名字的时候不要用模块的名字,不然会默认导入本地的文件,找不到你要的模块方法,会报错AttributeError: module ‘random‘ has no attribute ‘
- macbook usb口突然不能用 解决方法
- 如何读一个JavaWeb项目源代码
- Jetpack Compose - Box
- 【颜色】Web 颜色记录
- 网络日常运维步骤以及内容
- 王家耀院士 | 新型智慧城市“大脑”就是时空大数据平台
- 济南 青岛 社保转移
- AD查看任意角度PCB的3D效果图