温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java实现画图板上画一条直线

发布时间:2020-09-29 11:16:27 来源:脚本之家 阅读:214 作者:NaiKuaii 栏目:编程语言

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

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

过程: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 graph2;

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

//传画布值的方法
public void setGraphics(Graphics graph3){
graph2 = graph3;

<4>鼠标画出直线

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

 public void mousePressed(MouseEvent e){
  //获取按下信息
  x1=e.getX();
  y1=e.getY();
  }

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

public void mouseReleased(MouseEvent e){
  //获取松开信息
  x2=e.getX();
  y2=e.getY();
  //画线
  graph2.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 graph2;
 
 //传画布值的方法
 public void setGraphics(Graphics graph3){
 graph2 = graph3;
 
 
 }
 
  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();
  //画线
  graph2.drawLine(x1,y1,x2,y2);
  }
 
 
  public void mouseEntered(MouseEvent e){}
 
  public void mouseExited(MouseEvent e){}
}

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI