Java Swing实现画板的简单操作

Java Swing 画板的操作(修改颜色,更改图形,清除,任务栏按钮),供大家参考,具体内容如下

话不多说,直接看代码

package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.image.TileObserver;
import java.awt.image.WritableRenderedImage;

class MyPaiinterPanel extends JPanel{//画布
    BufferedImage image;
    
    public MyPaiinterPanel(BufferedImage image){
        this.image=image;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(image,0,0,null );//绘制指定图像中当前可用的图像
    }
}

public class paint {
    JFrame jf=new JFrame();
    BufferedImage image=new BufferedImage(600,600,BufferedImage.TYPE_3BYTE_BGR);// 构造一个类型为预定义图像类型之一的 BufferedImage
    Graphics g= image.getGraphics();
    int x1,x2,y1,y2;
    String xz="直线";
    public void fun(String ys){//设置画笔的颜色g
        if(ys.equals("红色")){
            g.setColor(Color.red);
        }
        if(ys.equals("白色")){
            g.setColor(Color.white);
        }
        if(ys.equals("绿色")){
            g.setColor(Color.green);
        }
    }
    public void funn(String ys){//设置画的图形
        this.xz=ys;
    }

    public void init(){
        MyPaiinterPanel mp=new MyPaiinterPanel(image);
        mp.addMouseListener(new MouseAdapter() {//添加监听

            @Override
            public void mousePressed(MouseEvent e) {//记录第一次单击的位置x1,y1
                x1=e.getX();
                y1=e.getY();
            }
            @Override
            public void mouseReleased(MouseEvent e) {//第二次单击的位置x2,y2
                x2=e.getX();
                y2=e.getY();
                if(xz.equals("直线")){//两点确定直线。。。
                    g.drawLine(x1,y1,x2,y2);
                }else
                if(xz.equals("圆")){
                    g.drawOval(x1,y1,Math.abs(x2-x1),Math.abs(y2-y1));
                }else
                if(xz.equals("矩形")){
                    g.drawRect(x1,y1,Math.abs(x2-x1),Math.abs(y2-y1));
                }
                if(xz.equals("清空")){
                    //jf.dispose();
                    //new paint().init();
                    g.clearRect(0,0,600,600);//橡皮擦
                }
                mp.repaint();//刷新画布
            }
        });
        
        JMenuBar bar=new JMenuBar();//设置任务栏按钮
        JMenu jm=new JMenu("颜色");
        JMenuItem[] item=new JMenuItem[7];
        item[0]=new JMenu("红色");
        item[1]=new JMenu("白色");
        item[2]=new JMenu("绿色");
        item[3]=new JMenu("直线");
        item[4]=new JMenu("圆");
        item[5]=new JMenu("矩形");
        item[6]=new JMenu("清空");
        jm.add(item[0]);
        jm.add(item[1]);
        jm.add(item[2]);
        bar.add(jm);
        JMenu jm1=new JMenu("形状");
        jm1.add(item[3]);
        jm1.add(item[4]);
        jm1.add(item[5]);
        jm1.add(item[6]);
        bar.add(jm1);

        for(int i=0;i< item.length;i++){//任务栏按钮监听
            int finalI = i;
            item[i].addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {

                    if(item[finalI].getText().equals("红色")){
                        fun("红色");
                    }
                    if(item[finalI].getText().equals("白色")){
                        fun("白色");
                    }
                    if(item[finalI].getText().equals("绿色")){
                        fun("绿色");
                    }
                    if(item[finalI].getText().equals("直线")){
                        funn("直线");
                    }
                    if(item[finalI].getText().equals("圆")){
                        funn("圆");
                    }
                    if(item[finalI].getText().equals("矩形")){
                        funn("矩形");
                    }
                    if(item[finalI].getText().equals("清空")){
                        funn("清空");
                    }
                }
            });
        }
        jf.setJMenuBar(bar);//设置任务栏

        jf.add(mp);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setSize(600,600);
        jf.setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        new paint().init();//调用方法
    }
}

下面看效果:

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

(0)

相关推荐

  • Java版画板的实现方法

    Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文章较长,但是代码是逐步递进的,可以按三部分分开来看,实现了当前部分再去看下一部分.)首先是画板的界面实现,因为我没有去找具体的图标,界面上的所有组件都是Swing的自带组件,所以界面略微有点简陋,不过如果想要优化也简单,把界面上的组件都改成自定义的图标即可.界面实现后,就可以考虑给界面的组件加上监听

  • JAVA GUI自定义JPanel画板背景

    自定义JPanel面板背景 一.前言 1.GUI全称是Graphical User Interface,就是图形用户界面.JAVA的GUI应用广泛在我们生活中也很常见.很多应用使用该GUI编程设计,像点击QQ图标弹出对应的登录窗体. 一般程序与用户的交互都基于对应程序的运行界面. 2.JPanel面板是SWING下的一个面板容器类.该面板支持嵌套,可设置布局方式,设置不同的布局管理器可添加其他控件像JButton按钮,JTextField文本框等.来设计完善一个程序界面窗体. 作为绘制面板支持s

  • Java Swing实现画板的简单操作

    Java Swing 画板的操作(修改颜色,更改图形,清除,任务栏按钮),供大家参考,具体内容如下 话不多说,直接看代码 package Swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.awt.image.TileObserver; import java.awt.image.WritableRende

  • Java Swing实现简单的体重指数(BMI)计算器功能示例

    本文实例讲述了Java Swing实现简单的体重指数(BMI)计算器功能.分享给大家供大家参考,具体如下: BMI,Body Mass Index,身体质量指数,是用体重公斤数 除以 身高米数平方得出的,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准. 而本文通过运用Java Swing实现了一个简单的BMI计算器.虽然现在网页上也有相应的网页应用,但是能够做出这个计算器来,还是有点成就感的,希望自己以后做出更多比这个好的应用. 最终运行效果: 功能:可以选择三个标准:中国.亚洲.WH

  • java swing实现简单的五子棋游戏

    用java swing写的一个简单的五子棋游戏. 下面是Main.java. package com.crossing.main; import com.crossing.view.GameWindow; public class Main { /** * @param args */ public static void main(String[] args) { GameWindow gameWindow = new GameWindow(); } } 下面是GameWindow.java.

  • Java单链表的简单操作实现教程

    前言 用Java实现单链表的简单操作,阅读本文和上一篇文章体会Java中类与C++中结构体指针的区别 提示:以下是本篇文章正文内容,下面案例可供参考 一.基本实现思路 构造结点类 构造链表类 具体测试实现 二.代码实现 1.定义结点类 package list.test01; /* *定义结点类 */ public class Node { private int data; public Node next; public Node(int data) { this.data = data;

  • java Swing组件setBounds()简单用法实例分析

    本文实例讲述了java Swing组件setBounds()简单用法.分享给大家供大家参考,具体如下: 先看API: public void setBounds(Rectangle r) 移动组件并调整其大小,使其符合新的有界矩形 r.由 r.x 和 r.y 指定组件的新位置,由 r.width 和 r.height 指定组件的新大小 参数: r - 此组件的新的有界矩形 从API来看,该方法的作用相当于setLocation()与 setSize()的总和.在实际使用时,需将容器的layout

  • Java Swing组件文件选择器JFileChooser简单用法示例

    本文实例讲述了Java Swing组件文件选择器JFileChooser简单用法.分享给大家供大家参考,具体如下: 先来看效果: 说明:选择文件或者文件夹.本例子就直接在控制台输出文件或者文件夹的路径.实际开发中,就可以将文件或文件夹的路径封装为File的实例来使用了. 具体代码如下: package awtDemo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.F

  • java swing实现简单计算器界面

    本文实例为大家分享了java swing实现简单计算器界面的具体代码,供大家参考,具体内容如下 已经学习了一部分的swing知识,现在综合运用里面的部分知识来实现一个计算器的界面. 运用到的知识: 1.常用顶层容器 JFrame类 的使用2.常用中间容器 JPanel类 的使用3.单行文本框的实现类 JTextField类 的使用4.按钮的实现类 JButton类 的使用5.边框布局管理器 的使用6.网格布局管理器 的使用 基本思路: 1.创建1个窗口f12.创建1个文本框t13.创建内层面板p

  • Java对时间的简单操作实例

    本文实例讲述了Java对时间的简单操作方法.分享给大家供大家参考.具体分析如下: 这里所用的Date指的是java.util.Date. ps:使用java操作时间感觉真真蛋疼,还是我大C#舒服,一个DateTime全部搞定 获取当前时间: 复制代码 代码如下: // 创建一个当前时间的Date对象 Date time = new Date(); 蛋疼的地方,对时间增.减操作: 复制代码 代码如下: // 使用Calendar类对时间增.减操作 Calendar c = Calendar.get

  • java简单操作word实例

    本文为大家分享了java简单操作word例子,供大家参考,具体内容如下 package apache.poi; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; impor

  • Java 模拟cookie登陆简单操作示例

    本文实例讲述了Java 模拟cookie登陆简单操作.分享给大家供大家参考,具体如下: 最近在做将禅道上的功能接口做到手机端,在做登陆的时候,看了禅道的源码,是由cookie来登陆,所以要做一个模拟cookie登陆的接口,将拿到的cookie放到每次接口请求的头部中去,就可以正常访问了. import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * @Author:

随机推荐