试图找出最好的方法来做到这一点(并且没有跨越任何具体细节,不是我不知道的).

我正在以可视方式显示图形(各种节点,边缘连接它们),圆圈和线条代表这样.每个节点都将在运行时添加,我无法对其进行硬编码.根据我的理解,所有绘画都需要在paint(Graphics g)方法中完成 – 这没有用,因为我无法更改参数,而且似乎只在初始创建期间调用它?

现在我正在考虑让它调用各种其他方法,传递Graphics对象,并依赖于其他变量 – 我将决定这是否是我甚至想要调用的(因为paint()方法是我唯一可以调用的方法).

我完全错了吗?从来没有打扰过这个.

为了让您更好地了解我想要最终得到的内容:我希望能够传递我想为节点添加的形状的坐标,然后将其添加到目前为止我在图表上的任何内容.然后与边缘相同,我希望能够传递线的起点和终点,以便在当时存在的任何内容上重新绘制.

不完全是我现在想要的 – 但是你会从我到目前为止拼凑的内容中得到这个想法:

import java.awt.*;

import javax.swing.*;

public class MyCanvas extends Canvas

{

public MyCanvas()

{

}

public void paint(Graphics graphics)

{

// Keep this until I figured out if it's painted on load or not.

graphics.drawLine(10, 20, 350, 380);

}

public static void main(String[] args)

{

MyCanvas canvas = new MyCanvas();

JFrame frame = new JFrame();

int vertexes = 0;

// Change this next part later to be dynamic.

vertexes = 10;

int canvasSize = vertexes * vertexes;

frame.setSize(canvasSize, canvasSize);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(canvas);

frame.setVisible(true);

}

public void drawNode(int x, int y, Graphics g)

{

// Treat each location as a 10x10 block. If position 1,1 then go to (5,5) - If position 3,5 then go to (25, 45) eg: (x*10)-5, (y*10)-5

int xLoc = (x*10) - 5;

int yLoc = (y*10) - 5;

g.setColor(Color.white);

g.fillOval(xLoc, yLoc, 8, 8);

g.drawOval(xLoc, yLoc, 8, 8);

}

public void drawArc(int x, int y, int xx, int yy, Graphics g)

{

int xLoc = (x*10) - 5;

int yLoc = (y*10) - 5;

int xxLoc = (xx*10) - 5;

int yyLoc = (yy*10) - 5;

g.drawLine(xLoc, yLoc, xxLoc, yyLoc);

}

}

编辑:(安德鲁的回应)

import java.awt.*;

import java.awt.image.BufferedImage;

import javax.swing.*;

public class MyCanvas extends JPanel

{

public MyCanvas() {

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

}

public static void main(String[] args)

{

int vertexes = 0;

// Change this next part later to be dynamic.

vertexes = 10;

int canvasSize = vertexes * vertexes;

JFrame frame = new JFrame();

JLabel label = new JLabel();

BufferedImage bImage = new BufferedImage(canvasSize, canvasSize, BufferedImage.TYPE_INT_ARGB);

Graphics2D g2d = bImage.createGraphics();

g2d.drawLine(50, 50, 300, 300);

ImageIcon iIcon = new ImageIcon(bImage);

label.setIcon(iIcon);

frame.add(label);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

g2d = drawNode(1,1,g2d);

label.repaint();

}

public static Graphics2D drawNode(int x, int y,Graphics2D g2d)

{

// Treat each location as a 10x10 block. If position 1,1 then go to (5,5) - If position 3,5 then go to (25, 45) eg: (x*10)-5, (y*10)-5

int xLoc = (x*10) - 5;

int yLoc = (y*10) - 5;

g2d.setColor(Color.white);

g2d.fillOval(xLoc, yLoc, 8, 8);

g2d.drawOval(xLoc, yLoc, 8, 8);

return g2d;

}

public static void drawArc(int x, int y, int xx, int yy)

{

int xLoc = (x*10) - 5;

int yLoc = (y*10) - 5;

int xxLoc = (xx*10) - 5;

int yyLoc = (yy*10) - 5;

// g.drawLine(xLoc, yLoc, xxLoc, yyLoc);

}

}

java绘画图形_java – 动态图形对象绘画相关推荐

  1. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...

    方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...

  2. java绘制图形_Java绘制图形

    1.了解什么是事件监听 写好一个界面后,我们就会对界面进行一些操作.比如,在输入框中输入数据,点击按钮或者菜单.这些操作我们称之为一个事件. 就比如我们要监视一间房子中会发生什么事情,就会给这间房子装 ...

  3. 实验楼Java写计算器_Java版图形界面计算器

    Java 版图形界面计算器 实验说明及介绍 环境登录 无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou 环境介绍 本实验环境采用带桌面的 Ubuntu Linux 环境,实验 ...

  4. java表格界面_Java自学-图形界面 表格

    Swing 使用 JTable详解 示例 1 : 基本表格 显示一个Table需要两组数据 一维数组: String[]columnNames 表示表格的标题 二维数组: String[][] her ...

  5. java 字母图形_Java字母图形

    问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个 ...

  6. java动态添加属性_java – 动态添加对象的属性

    你好: 在我们的应用程序中,我们从数据库中检索了一些数据,例如,表格中包含以下字符:id,name,age,address,email. 然后我们将根据客户获得一些这些属性. 如果客户端需要id,na ...

  7. java 验证码 算术_java生成图形验证码(算数运算图形验证码 + 随机字符图形验证码)...

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  8. java 界面 菜单栏_Java自学-图形界面 菜单

    如何在Swing中使用菜单JMenu GUI的菜单分为 菜单栏,菜单和菜单项 步骤 1 : 菜单栏和菜单 菜单栏和菜单 package gui; import javax.swing.JFrame; ...

  9. java 类定义_JAVA类与对象(二)----类定义基础

    类是组成java程序的基本要素,是java中的一种重要的复合数据类型.它封装了一类对象的状态和方法,是这一类对象的原型.一个类的实现包括两个部分:类声明和类体,基本格式: class { 属性 方法 ...

最新文章

  1. caffe linux 教程,CentOS7安装Caffe的教程详解
  2. windows系统服务器添加ssl证书
  3. 什么从什么写短句_从什么到从什么造句
  4. java断言assertequals_如何实现Java测试的自定义断言
  5. 金融数据分析与挖掘实战4.1 Matplotlib(一)
  6. 18、led驱动程序的实现
  7. 利用DllPlugin分割你的第三方库
  8. php在线考试系统详细步骤
  9. 卡巴世界,卡巴斯基,卡巴斯基key,卡巴斯基激活码,软件下载,每天更新
  10. 【Linux系统开发】Study210开发板刷安卓系统
  11. Android中的Drawable(一)
  12. bugkuCTF—杂项—旋转跳跃
  13. 服务器手机远程控制,向日葵远程控制让手机也能远程管理
  14. 打开网站服务器显示403,打开网站显示403是什么意思
  15. UnityShader 图片像素化风格渲染
  16. Marvell88Q5192 switch调试记录(BSTA1000B平台)
  17. PPP over Ethernet(PPPoE)协议
  18. Spring学习笔记-狂神版
  19. seata: endpoint format should like ip:port
  20. is running 8724480B beyond the ‘PHYSICAL‘ memory limit.

热门文章

  1. windows 程序禁用中文输入法
  2. 004--Keil使用--出现expected a “{“
  3. 适合小白的重装系统方式
  4. HTML期末大作业~海贼王中乔巴专题漫画学生网页设置作业源码(HTML+CSS+JavaScript)
  5. Agg vs. Cairo 二维绘图引擎之比较和选择
  6. 获取java应用PID的几种方式
  7. 2020-2-25(93)
  8. MQ46# 实战|RocketMQ分区阻塞应急处理
  9. DECLARE_MESSAGE_MAP()、BEGAIN_MESSAGE_MAP()和 END_MESSAGE_MAP()
  10. 厦门国际动漫节金海豚 “创造未来”游戏开发大赛