新手程序员在这里.

我正在制作一个程序,用于在笛卡尔坐标系中呈现用户输入的方程.目前我遇到一些让用户在坐标中自由移动视图的问题.目前使用mouseDragged,用户可以稍微拖动视图,但是一旦用户释放鼠标并尝试再次移动视图,原点就会快速回到鼠标光标的当前位置.让用户自由移动的最佳方法是什么?提前致谢!

这是绘图区域的代码.

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.geom.Line2D;

import java.awt.geom.Point2D;

import javax.swing.JPanel;

public class DrawingArea extends JPanel implements MouseMotionListener {

private final int x_panel = 350; // width of the panel

private final int y_panel = 400; // height of the panel

private int div_x; // width of one square

private int div_y; // height of one square

private int real_y;

private int real_x;

private Point origin; // the origin of the coordinate

private Point temp; // temporary point

private static int y = 0;

private static int x = 0;

DrawingArea() {

setBackground(Color.WHITE);

real_x = x_panel;

real_y = y_panel;

setDivisionDefault();

setOrigin(new Point((real_x / 2), (real_y / 2)));

setSize(x_panel, y_panel);

addMouseMotionListener(this);

}

DrawingArea(Point origin, Point destination) {

this.origin = origin;

this.destination = destination;

panel = new JPanel();

panel.setSize(destination.x, destination.y);

panel.setLocation(origin);

this.panel.setBackground(Color.red);

panel.setLayout(null);

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D line = (Graphics2D) g;

temp = new Point(origin.x, origin.y);

line.setColor(Color.red);

drawHelpLines(line);

line.setColor(Color.blue);

drawOrigin(line);

line.setColor(Color.green);

for (int i = 0; i < 100; i++) { // This is a test line

//temp = this.suora();

temp.x++;

temp.y++;

line.drawLine(temp.x, temp.y, temp.x, temp.y);

}

}

public void setOrigin(Point p) {

origin = p;

}

public void drawOrigin(Graphics2D line) {

line.drawLine(origin.x, 0, origin.x, y_panel);

line.drawLine(0, origin.y, x_panel, origin.y);

}

public void drawHelpLines(Graphics2D line) {

int xhelp= origin.x;

int yhelp= origin.y;

for (int i = 0; i < 20; i++) {

xhelp+= div_x;

line.drawLine(xhelp, 0, xhelp, y_panel);

}

xhelp= origin.x;

for (int i = 0; i < 20; i++) {

xhelp-= div_x;

line.drawLine(xhelp, 0, xhelp, y_panel);

}

for (int i = 0; i < 20; i++) {

yhelp-= div_y;

line.drawLine(0, yhelp,x_panel, yhelp);

}

yhelp= origin.y;

for (int i = 0; i < 20; i++) {

yhelp+= div_y;

line.drawLine(0, yhelp, x_panel, yhelp);

}

}

public void setDivisionDefault() {

div_x = 20;

div_y = 20;

}

@Override

public void mouseDragged(MouseEvent e) {

//Point temp_point = new Point(mouse_x,mouse_y);

Point coords = new Point(e.getX(), e.getY());

setOrigin(coords);

repaint();

}

@Override

public void mouseMoved(MouseEvent e) {

}

}

java dragged_Java:mouseDragged并在图形界面中移动相关推荐

  1. java画二维坐标_在图形界面中绘制二维的坐标系统

    在图形界面中绘制二维的坐标系统,其中x轴位于绘图区正中,y轴位于绘图区的最左边.实现以下基本功能: (1)设计界面接受用户输入的实验数据,同时绘制数据点,每个数据点用一个小圆号表示.最后,用直线或曲线 ...

  2. 在 Virt-manager 图形界面中使用桥接网络

    在 Virt-manager 图形界面中使用桥接网络(bridged networking) 2012-09-03 15:40:23 标签:virt manager.bridge 使用 virt-ma ...

  3. linux非图形化界面,在Linux图形界面中显示中文,非图形界面中,显示英文

    在Linux图形界面中显示中文,非图形界面中,显示英文 设置语言,应当改环境变量LANG 1. 在非Xwindow下显示英文.非Xwindow下不能显示中文汉字,如果设置成中文,则中文部分显示乱码,第 ...

  4. 南邮java实验一报告_南邮JAVA程序设计实验1 综合图形界面程序设计

    实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. 实验内容: 设计和编写一个用于将人民币转换为等值的 ...

  5. java gui 层次结构_javaGUI教学图形界面的层次结构.ppt

    第六章GUI Graphics User Interface图形用户界面 浅谈图形界面开发 最常见的图形界面:windows操作系统 学习GUI的方法与内容 一.图形对象的布局(显示的内容如何摆放) ...

  6. 06 java GUI 网络编程:图形界面聊天室

    仿照第4篇笔记的形式,笔者决定将GUI和网络编程部分用综合练习的方式来总结.练习项目是有图形界面的聊天室,用到了GUI中的javax.swing包和网络编程中的TCP/socket编程.GUI部分的难 ...

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

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

  8. java swing 获当前日期_Java图形界面Swing下日期控件

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Java自学-图形界面 日期控件 两种Swing下的日期控件 DatePick ...

  9. java 2d划线 刷子_Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO2DGRAPHICS)...

    Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO2DGRAPHICS) (2007-04-05 23:37:39) Java 2D Graphics提供了强大的画线功能,可 ...

最新文章

  1. 记录一下海上风力机机械装置
  2. Oracle EM 相关命令
  3. 文本编辑器中实现设置工具栏和状态栏可见性的功能
  4. [新思路]Online DVD Rental! 美国在线DVD租赁
  5. 如何把Linux的虚拟内存调成0,手把手教您扩展虚拟内存
  6. 精益思想,从哪里开始?
  7. 概率论与数理统计浙大第五版 第三章 部分习题
  8. 华为云计算hcip证书有效期_华为云计算HCIP V4.0认证要发布了!
  9. 科学计算机要用的电池是几号,科学计算器电池
  10. OpenCV图像处理和图像识别常用函数
  11. 非同步DCDC的工作模式(CCM、DCM和BCM)
  12. 弘辽科技:淘宝流量下滑了怎么办?淘宝流量下滑应对方法
  13. 《数学之美》阅读笔记1
  14. 蓝桥杯:解救小哈最短路径
  15. 雨林木风欲借Linux洗白走上大雅之堂?
  16. 【成电860考研】经验贴汇总(公共课+专业课+复试)-扒遍所有网站:信软群、王道、知乎、csdn等,截止21年7月整理出的所有帖子-共15篇
  17. 单个JVM下支撑100w线程数vm.max_map_count
  18. 神策 2019 数据驱动大会,引领大数据行业“矩•变”升级
  19. CSR86XX ROM版 操作EEPROM,FLASH的操作流程
  20. esp8266实现coap协议。

热门文章

  1. java大数输出一位小数_java大数练习 大明A+B(大数小数的高精度)
  2. ZZULIOJ 1100: 求组合数(函数专题)
  3. ZZULIOJ 1073:级数求和
  4. 拷贝目录: 将D:\course拷贝到C盘根下.... 需要使用到: FileInputStream FileOutputStream
  5. javascript获取系统时间时区_详解Linux操作系统修改时间和修改时区的方法
  6. OpenJudge NOI 1.7 28:单词倒排
  7. 信息学奥赛一本通 2033:【例4.19】阶乘之和
  8. 信息学奥赛一本通(1260:【例9.4】拦截导弹(Noip1999))
  9. 信息学奥赛一本通(1312:【例3.4】昆虫繁殖)
  10. Problem C(HDU-5687)