目标:在画图板上画一条直线,供大家参考,具体内容如下

一、首先需要建立一个界面

过程:1、创建界面对象(Java语言中已经有,可直接创建对象来使用)。

2、对于一个界面,我们需要设置它的大小、居中、界面关闭、界面可见。

3、写主方法去实现界面。

(目前界面还未实现画图板的功能)

public class DrawUI {

//显示界面的方法

public void show(){

//创建界面对象

JFrame jframe = new JFrame();

//设置界面的尺寸、位置居中、关闭、标题

jframe.setSize(1000, 900);

jframe.setLocationRelativeTo(null);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setTitle("画图板v2.0");

//设置界面可见

jframe.setVisible(true);

}

//主方法

public static void main(String[] args){

DrawUI UI = new DrawUI();

UI.show();

}

}

二、创建监听器类

1、重新创建一个监听器(Listener)的类:要在界面上实现画图,我们需要给界面添加监听器。====>实际上是让鼠标的一些指令能够在界面上有反应。换言之,监听器是一个连接鼠标与界面的桥梁。

2、监听器类(Listener)实现鼠标监听器(MouseListener)的接口.

3、加入鼠标监听器下的所有方法。

public class Listener implements MouseListener{

//鼠标点击

public void mouseClicked(MouseEvent e){}

// 鼠标按下

public void mousePressed(MouseEvent e){}

//鼠标松开

public void mouseReleased(MouseEvent e){}

// 进入

public void mouseEntered(MouseEvent e){}

// 退出

public void mouseExited(MouseEvent e){}

}

三、实现画出直线

1、创建监听器类(Listener)后,我们需要在界面类中添加监听器  =====> 在界面上添加监听器后,我们才能在界面上画图。(写在画图板“可见”之前 )。

在画图板中输入一下代码

//创建监听器

Listener draw = new Listener();

//添加监听器

jframe.addMouseListener(draw);

2、画一条直线,我们需要用Graphics (画布工具)用于画图。在此,画图板需要获取Graphics 并且监听器对象上设置该画布。

(写在画图板“可见”之后)

//获取Graphics

Graphics graph = jframe.getGraphics();

//给监听器的画布对象赋值

draw.setGraphics(graph);

然后转到监听器类(Listener)中输入代码

3、开始画直线

<1> 首先,画一条直线我们需要获取直线两端点的坐标。所以定义x1,y1,x2,y2。

<2>画布画图,需要定义Graphics

//记录坐标

int x1,y1,x2,y2;

//定义Graphics

Graphics graph1;

<3> 传画布(Graphics)值的方法 ====> 画图板上的画布值等于监听器上的画布值

//传画布值的方法

public void setGraphics(Graphics graph2){

graph1 = graph2;

<4>鼠标画出直线

在鼠标按下事件中输入起点坐标

public void mousePressed(MouseEvent e){

//获取按下信息

x1=e.getX();

y1=e.getY();

}

在鼠标松开事件中输入终点坐标,并画出直线

public void mouseReleased(MouseEvent e){

//获取松开信息

x2=e.getX();

y2=e.getY();

//画线

graph1.drawLine(x1,y1,x2,y2);

}

四、完整过程:

界面

package Draw;

import java.awt.Graphics;

import javax.swing.JFrame;

public class DrawUI {

public void show(){

JFrame jframe = new JFrame();

jframe.setSize(1000, 900);

jframe.setLocationRelativeTo(null);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setTitle("画图板v2.0");

//创建监听器

Listener draw = new Listener();

//添加监听器

jframe.addMouseListener(draw);

jframe.setVisible(true);

//获取Graphics

Graphics graph = jframe.getGraphics();

//给监听器的画布对象赋值

draw.setGraphics(graph);

}

//主方法

public static void main(String[] args){

DrawUI UI = new DrawUI();

UI.show();

}

}

监听器

package Draw;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

public class Listener implements MouseListener{

//记录坐标

int x1,y1,x2,y2;

//定义Graphics

Graphics graph1;

//传画布值的方法

public void setGraphics(Graphics graph2){

graph1 = graph2;

}

public void mouseClicked(MouseEvent e){}

public void mousePressed(MouseEvent e){

//获取按下信息

x1=e.getX();

y1=e.getY();

}

public void mouseReleased(MouseEvent e){

//获取松开信息

x2=e.getX();

y2=e.getY();

//画线

graph1.drawLine(x1,y1,x2,y2);

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持谷谷点程序。

java画板中画直线_java实现画图板上画一条直线相关推荐

  1. java在方法中用来抛出异常关键字的是,在Java语言中以下哪个关键字用于在方法上声明抛出异常()...

    在Java语言中以下哪个关键字用于在方法上声明抛出异常() 更多相关问题 [判断题] 现金到账户汇款和账户到账户汇款简称为入账汇款. [单选] 客户办理一笔134.45元按址汇款,附言5个汉字,共应收 ...

  2. java画板中画直线_画图板(画直线)

    1.创建一个画图板(界面) public class DrawUI { //显示界面的方法 public void show(){ //创建界面对象 JFrame jframe = new JFram ...

  3. java api中的设计模式_Java API 设计模式之策略(Strategy)

    策略设计模式与状态设计模式相类似.我们提到过,状态设计模式包含一个状态对象,该对象封装一个上下文对象的状态.策略设计模式包含一个策略对象.该对象与状态设计模式的状态对象相类似.它们之间的关键不同在于: ...

  4. java语言中的 继承_Java语言有关继承的总结

    一.继承 1.继承的概念 继承机制是面向对向程序设计不可缺少的关键概念,是实现软件可重用的根基,是提高软件系统的可扩张性与可维护性的主要途径.(它允许创建分等级层次的类). 继承是指一个类的定义可以基 ...

  5. java定时任务中使用多线程_java项目中如何利用多线程实现一个定时器任务

    java项目中如何利用多线程实现一个定时器任务 发布时间:2020-11-10 16:04:03 来源:亿速云 阅读:86 作者:Leah 今天就跟大家聊聊有关java项目中如何利用多线程实现一个定时 ...

  6. java线程中的死锁_Java多线程中的死锁 - Break易站

    Java 多线程 synchronized关键字用于使类或方法线程安全,这意味着只有一个线程可以锁定同步方法并使用它,其他线程必须等到锁定释放并且其中任何一个获得该锁定. 如果我们的程序在多线程环境中 ...

  7. java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...

    [简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...

  8. java 数组中插入元素_Java数组添加元素

    java 数组中插入元素 How to add elements to an array in java We know that java array size is fixed, so we ca ...

  9. java接口中的抽象方法_Java中的接口与抽象方法

    Java中的接口与抽象方法 时间:2017-06-27     来源:华清远见JAVA学院 今天华清Java学院小编来和大家分享一下Java中接口和抽象方法的一些知识. Java中接口是什么? 什么是 ...

最新文章

  1. [置顶] 面向业务开发应用
  2. 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)
  3. 非标准配置linux,剖析非标准波特率的设置和使用于Linux操作系统中
  4. Laravel POST请求API接口 使用validate表单验证返回欢迎页
  5. 【Ex_BSGSBSGS算法模板】poj2417 poj3243
  6. unity 中让Text的文字动态刷新形式
  7. php编程实现单入口,apache配置php实现单一入口方法
  8. nginx配置文件nginx.conf
  9. 嫁给我好吗?| 今日最佳
  10. java迭代器逆序_迭代器
  11. sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...
  12. 一条SQL查询语句是如何执行的? MySql杂谈
  13. PHP安全,防止远程非法提交
  14. python如何让进程运行在指定的cpu上_java程序可以实现在指定CPU上运行吗?
  15. [转载] Python pandas数据分析中常用方法
  16. pytorch---之随机种子初始化
  17. 开心记账本 投资理财两不误
  18. SOA系列文章之(四):在Web服务中使用SOA
  19. 普林斯顿微积分读本03第二章--编程实现函数图像绘制、三角学回顾
  20. 下载C语言标准库源码

热门文章

  1. 51单片机使用 8线/4线/PCF8574(I2C) 驱动 LCD1602
  2. 用Java实现平衡二叉树
  3. 绩效考核指标KPI 听课笔记
  4. stm32f103系列开发板控制对数码管来显示自定义时间(自主学习)
  5. Linux下U盘自动识别和挂载
  6. torch.chunk与nn.Conv2d groups
  7. 全球及中国左旋肉碱富马酸盐行业发展趋势与需求形势预测报告(2022-2027年)
  8. Bootloader的启动与功能
  9. Xadmin自定义开发 笔记(一)
  10. Access point name(APN)