用JAVA画个简单的拓扑图
来源:互联网 发布:西部世界什么意思 知乎 编辑:程序博客网 时间:2024/06/05 20:11
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 = 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<vertices.length; i++) for (int j=i+1; j<vertices.length; 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<vertices.length; i++) g.fillOval(vertices[i][0], vertices[i][1], 10, 10); g.setColor(Color.BLACK); for (int i=0; i<vertices.length; 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<vertices.length; 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<i; 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<vertices.length; i++) for (int j=i+1; j<vertices.length; j++) if (rnd.nextInt(100) > 20) linked[i][j] = rnd.nextInt(10)+1; for (int i=0; i<vertices.length; 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(); }}
运行结果截图为:
0 0
- 用JAVA画个简单的拓扑图
- 一个简单拓扑排序的 java 实现
- 简单的拓扑排序
- java Struts + JQuery +d3.js 动态生成一个简单的拓扑图
- Flex 简单拓扑图
- Jsp网络拓扑图--用java实现网络拓扑图
- Java创建图的拓扑排序
- 简单拓扑排序的实现
- 简单的拓扑排序模板
- 拓扑排序的简单实现
- 拓扑排序的简单实现
- 最简单的flex网络拓扑图开发(一)
- codeforces 208C 图的拓扑排序+简单DP
- 用Java做了个简单的取色软件
- 用JAVA写个简单的聊天室-单人版
- 第一个简单的JAVA程序
- 第一个简单的JAVA程序HelloWorld
- Java第一个简单的程序
- 初识Java-IO流
- 偏微分方程数值解主要步骤
- 根据二叉树的前序中序遍历序列重建二叉树
- 相对论核心原理
- 一个简单的人机交互脚本-ssh
- 用JAVA画个简单的拓扑图
- 随笔
- 《疯狂宇宙》阅读笔记
- JMeter学习笔记6-Duration Assertion和Size Assertion
- win10 Anaconda下安装TensorFlow 1.1.0(简易)
- 解决'ascii' codec can't encode character
- HDU 5980 Find Small A
- Android 进程(上),启动进程。
- Oracle中job使用详解