Java实现简易画图板

本文实例为大家分享了Java实现简易画图板的具体代码,供大家参考,具体内容如下

这是Windows系统自带的画图板,我们就是模仿着用Java去写一个简易版的画图板。

效果图

图中的四个颜色按钮是可以配合要画的图形而改变线条颜色的,而且每次打开颜色按钮的颜色都是随机的。目前画图什么的都没什么问题,只是一些细节没有去完全修复了,但不影响使用,再加上近段时间有点太忙,就没有去完善相关细节了,有兴趣的小伙伴可以评论区帮忙提出指正意见哈。

画图板UI界面代码

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.util.Random;

public class DrawGraphics {
    Random rand=new Random();
     public static void main(String []args){
        DrawGraphics draw=new DrawGraphics();
        draw.displayUI();
     }
    public JButton getButton(String s,DrawListener dl,boolean flag){
        JButton btn=new JButton();
        //每个按钮的尺寸
        Dimension dim=new Dimension(200,50);
        //如果flag为true,创建文字按钮,否则创建颜色按钮
        if(flag){
            btn=new JButton(s);
        }
        else{
            Color c= new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256));
            btn.setBackground(c);
        }
        btn.setPreferredSize(dim);
        btn.addActionListener(dl);
        return btn;
    }
    
    public void displayUI(){
        JFrame frame=new JFrame();
        FlowLayout f1=new FlowLayout();
        
        frame.setTitle("画图板");
        frame.setSize(1000,1000);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(f1);
        frame.setResizable(false);
        
        DrawListener dl=new DrawListener();
        
        String []name={"直线","矩形","圆","三角形"};
        for(int i=0;i<name.length;i++){
            
            frame.add(getButton(name[i],dl,true));
        }
        for(int i=0;i<name.length;i++){
            frame.add(getButton("",dl,false));
        }
        
        frame.addMouseListener(dl);
        frame.setVisible(true);
        // 获取画笔 --- 必须要放在 可视化之后
        Graphics g=frame.getGraphics();
        dl.g=g;
        dl.btnstr=name[0];
        dl.name=name;
        
    }
}

画图板UI监听器代码

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

import javax.swing.JButton;

import java.awt.Color;
import java.awt.Graphics;

public class DrawListener implements MouseListener,ActionListener{

    Graphics g;
    int x1,x2,y1,y2;
    int x3,x4,x5,y3,y4,y5;
    int count=0;
    String []name;
    String btnstr;
    
    int i;
    @Override
    public void actionPerformed(ActionEvent e) {
        btnstr=e.getActionCommand();
        if(btnstr.equals("")){
            JButton btn=(JButton)e.getSource();
            Color btnColor=btn.getBackground();
            g.setColor(btnColor);
        }
        else {
            for(i=0;i<name.length;i++){
                if(btnstr.equals(name[i]))break;
            }    
        }
                
    }
    
    @Override
    public void mouseClicked(MouseEvent e) {
        if(btnstr.equals(name[3])||btnstr.equals("")){
        g.drawOval(e.getX()-4, e.getY()-4, 8, 8);
        if(count==0){
            x3=e.getX();
            y3=e.getY();
            count++;
        }
        else if(count==1){
            x4=e.getX();
            y4=e.getY();
            g.drawLine(x3, y3, x4, y4);
            count++;
        }
        else if(count==2){
            x5=e.getX();
            y5=e.getY();
            g.drawLine(x3, y3, x5, y5);
            g.drawLine(x4, y4, x5, y5);
            count=0;
        }
        }        
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        x1=e.getX();
        y1=e.getY();
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
        x2=e.getX();
        y2=e.getY();
        if(btnstr.equals(name[0])||btnstr.equals("")){
            g.drawLine(x1, y1, x2, y2);
        }
        else if(btnstr.equals(name[1])||btnstr.equals("")){
            g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));
        }
        else if(btnstr.equals(name[2])||btnstr.equals("")){

            g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));
        }
        
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
       
}

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

(0)

相关推荐

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

    目标:在画图板上画一条直线,供大家参考,具体内容如下 一.首先需要建立一个界面 过程:1.创建界面对象(Java语言中已经有,可直接创建对象来使用). 2.对于一个界面,我们需要设置它的大小.居中.界面关闭.界面可见. 3.写主方法去实现界面. (目前界面还未实现画图板的功能) public class DrawUI { //显示界面的方法 public void show(){ //创建界面对象 JFrame jframe = new JFrame(); //设置界面的尺寸.位置居中.关闭.标

  • Java实现的简单画图板示例

    本文实例讲述了Java实现的简单画图板.分享给大家供大家参考,具体如下: 这个画图板是我好久之前做的,之后浙大的同学需要做课设然后就花了一点时间将它改了一下,变得简单些能够方便扩充功能,同时学习java基础 先截图一下吧,就可以知道有哪些功能了~ 三个分区,上面选择图形,下面选择颜色,立体圆就是一个分形,也先放着不需要的同学可以注释了它 代码很简单,就是JPanel进行分区,得到画笔,同时使用画图的函数就可以做到了 贴代码应该很快就会了~ 主类 package awtDemo; import j

  • java实现画图板功能

    本文实例为大家分享了java实现画图板的具体代码,供大家参考,具体内容如下 画图板需要满足的功能有: 画线,画三角形,画矩形,画多边形,画曲线 设置不同颜色的画笔 改变窗口大小或最小化窗口后重新打开时图案不消失 画图方法的编写: 创建一个类,继承JPanel类,重写JPanel的绘制方法,重写方法时写上原有的绘制方法,再添加绘制已有的图形的方法.(为了在改变窗口大小和最小化窗口后再打开时图案不消失) 在画图方法中首先创建一个窗体,设置好各项参数后,将窗体设置边框布局.由于继承了JPanel类,重

  • 基于java实现画图板功能

    本文实例为大家分享了java实现画图板功能的具体代码,供大家参考,具体内容如下 一.介绍 这个画图板主要实现的功能是画矩形(矩形使用的是一个函数画图的方法,这样画出来的图形比较有特点).椭圆.多变形(先画一条直线,鼠标每点击一个地方就会从上一个点连接到点击的点,当鼠标双击时,双击的点会和终点和起点相连).画线.橡皮以及颜色选择器,效果图如下所示: 二.具体实现 本项目主要使用的是java.swing以及java.awt的画图工具来实现.首先显示窗口的建立,先让主类draw继承javax.swin

  • Java实现简易画图板

    本文实例为大家分享了Java实现简易画图板的具体代码,供大家参考,具体内容如下 这是Windows系统自带的画图板,我们就是模仿着用Java去写一个简易版的画图板. 效果图 图中的四个颜色按钮是可以配合要画的图形而改变线条颜色的,而且每次打开颜色按钮的颜色都是随机的.目前画图什么的都没什么问题,只是一些细节没有去完全修复了,但不影响使用,再加上近段时间有点太忙,就没有去完善相关细节了,有兴趣的小伙伴可以评论区帮忙提出指正意见哈. 画图板UI界面代码 import java.awt.Color;

  • python opencv实现简易画图板

    python-opencv实现简易画图板,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ Created on Sat May 19 17:34:54 2018 @author: xxx """ import cv2 as cv import numpy as np def nothing(x): pass # 当鼠标按下时变为 True drawing = False # 如果 mode 为 True 绘制矩形

  • C#实现简易画图板的示例代码

    编程环境 VS2019.C# 画板功能演示 实现简单画图 打开功能 可打开jpg格式的文件 保存功能 可将绘画的内容保存为jpg文件 颜色选择功能 用户可自由选择所需的颜色 粗细选择功能 提供四种型号的画笔供用户选择 清空画布功能 点击清空后提示是否清空 选择确定则将画布清空,效果如下图所示 功能实现过程 定义公共变量 用于多个窗体之间共同使用数据 public class TempData { //用于多个窗体共同使用的数据 public static int size=5; public s

  • Java实现简易俄罗斯方块

    本文实例为大家分享了Java实现简易俄罗斯方块的具体代码,供大家参考,具体内容如下 一.将对象抽象为类 首先考虑俄罗斯方块游戏中含有哪些具体的对象,对象中含有哪些具体属性和方法,然后用代码来实现. 建立如下类: Cell类:代表最小的方格单位,构成7种图形的最基本图形. 含有row(行号),col(列号),image(对应的图片)属性, 含有left(左移),right(右移),drop(下落)方法. Tetromino类:代表由4个最小方格构成的7种图形的合集. 含有cells(四个方块)属性

  • java实现简易的五子棋游戏

    本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 先上效果图 一.问题分析 1.五子棋游戏分析: 五子棋作为较为普遍且简易的娱乐游戏,受到众多人的热爱,且五子棋AI也是一个较为容易实现的AI.下面我们先来分析游戏规则.(哈哈,虽然大家都知道,但我还是想写写)双方分别使用黑白两色棋子,下在棋盘横线交叉处,先连成五子者胜利.(黑棋禁手啥的规则在我的程序里没加,就不赘述了). 2.程序分析: (1)首先,五子棋开始,我们需要一个棋盘,15*15的棋盘,需要黑白棋子.

  • Java实现简易五子棋小游戏

    本文实例为大家分享了Java实现简易五子棋小游戏的具体代码,供大家参考,具体内容如下 一.实践目标: 1.掌握JavaGUI界面设计 2.掌握鼠标事件的监听(MouseListener,MouseMotionListener) 二.实践内容: 设计一个简单的五子棋程序,能够实现五子棋下棋过程.如下图所示 五子棋运行界面 1.五子棋棋盘类 package cn.edu.ouc.fiveChess;   import java.awt.Color; import java.awt.Cursor; i

随机推荐