用java语言简单的实现在面板上画直线

本篇文章简单讲一讲用java语言实现直线的绘制

需要用到的模块知识

  1. 用户界面设计

  1. 绘制图形工具

  1. 动作监听器

这里简单说明一下关于监听器的要点

  • 监听器其实就是一个实现特定接口的java程序

  • 这个java程序会用于监听另一个java对象的方法调用属性改变等,当被监听的对象发生这两种事件后,监听器中的方法就会立即执行

  • 监听器主要用于检测网站的在线人数,统计网站的访问量

总体步骤

  1. 设计界面

  1. 创建一个类,用于实现动作监听器,即ActionListener

  1. 再创建一个类,用于实现鼠标监听器,即MouseListener

设计界面

  1. 导入swing和awt的包这两个源码包

  1. 创建一个类,取名UI

  1. 创建一个方法,取名initUI,并将对于界面属性定义的代码卸载这个方法中

package com.zx2;
import javax.swing.*;
import java.awt.*;

    public class UI {
    //创建方法
    public void initUI(){
        JFrame jf=new JFrame("创意图形");//创建窗体对象
        //设置窗体对象的具体属性,大小、布局
        jf.setSize(800,800);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setLayout(new FlowLayout());
        //创建两个按钮,并给两个按钮,添加同一个动作监听器
        JButton btn1=new JButton("Action1");
        JButton btn2=new JButton("Action1");
        jf.add(btn1);
        jf.add(btn2);
        Action1 ac1=new Action1();
        btn1.addActionListener(ac1);
        btn2.addActionListener(ac1);
        jf.setVisible(true);
        //创建绘制图形的对象
        ShapeListener s1=new ShapeListener();
        jf.addMouseListener(s1);
        Graphics g=jf.getGraphics();
        s1.gr=g;

这里需要特别说明一下Graphics,这是一个绘制图形的工具,必须要在可视化之后实现,即写在jf.setVisible(true);这条代码之后

  1. 调用这个方法

//常规动作,导入源码包
import javax.swing.*;
import java.awt.*;

    public class UI {
    //创建方法
    public void initUI(){
        JFrame jf=new JFrame("创意图形");//创建窗体对象
        //设置窗体对象的具体属性,大小、布局
        jf.setSize(800,800);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setLayout(new FlowLayout());
        //创建两个按钮,并给两个按钮,添加同一个动作监听器
        JButton btn1=new JButton("Action1");
        JButton btn2=new JButton("Action1");
        jf.add(btn1);
        jf.add(btn2);
        Action1 ac1=new Action1();
        btn1.addActionListener(ac1);
        btn2.addActionListener(ac1);
        jf.setVisible(true);
        //创建绘制图形的对象
        ShapeListener s1=new ShapeListener();
        jf.addMouseListener(s1);
        Graphics g=jf.getGraphics();
        s1.gr=g;
}
    public static void main(String[] args){
        UI ui=new UI();
        ui.initUI();
    }
}

实现动作监听器

  1. 导入系统的源码包

  1. 创建一个类,并实现动作监听器

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Action1 implements ActionListener {
    //用override实现伪代码的重写
    @Override
    public void actionPerformed(ActionEvent e){
        System.out.println ("Action1 - clicked");

        String actionStr = e.getActionCommand ();
        System.out.println ("ActionStr:" + actionStr);
        if(actionStr.equals ("Action1")){
        }else if(actionStr.equals ("Action2")){
        }
    }
}

实现鼠标监听器

鼠标监听器要用的MouseEvent,即鼠标事件,这个源码包用于获取鼠标操作时的坐标和按键动作

  1. 导入系统源码包

  1. 创建一个类,取名ShapeListener,用implements实现MouseListener

  1. 定义三种坐标

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class ShapeListener implements MouseListener{
    int x1,y1,x2,y2,x3,y3;
    Graphics gr;
  1. 用Graphics方法实现显示图形(下面的代码读者可以先不必细究逻辑方法,因为这些代码相对固定)

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class ShapeListener implements MouseListener{
    int x1,y1,x2,y2,x3,y3;
    Graphics gr;

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("鼠标点击");
        //获取并显示x3和y3的坐标
        x3=e.getX();
        y3=e.getY();
        System.out.println("x3="+x3+"y3="+y3);
    }
    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("鼠标按下");
        //获取并显示x2和y2的坐标
        x1=e.getX();
        y1=e.getY();
        System.out.println("x1="+x1+"y1="+y1);
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("鼠标释放");
        //获取并显示x2和y2的坐标
        x2=e.getX();
        y2=e.getY();
        System.out.println("x2="+x2+"y2="+y2);
        gr.drawLine(x1,y1,x2,y2);//输入坐标的时候要对应好
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("鼠标进入窗体");
    }
    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("鼠标离开窗体");
    }
}

效果展示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值