JFrame类

它是屏幕上window的对象,能够最大化、最小化、关闭,解决将Swing三大基本构造块

(按钮、标签、文本字段)组织起来,并把它们呈现给用户——(容器)

JPanel类

是java图形用户界面(GUI)工具包swing中的面板容器类,是一种轻量级容器,可以加入到Fram窗体中,其自身可以嵌套组合,在不同子容器中包含其他组件(Button,TextArea等)功能是对窗体上的这些控制进进行组合。

以下是部分代码实现:

package mini.draw.Pad;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;/*** 画图工具类* 1.创建一个窗体* 2.创建面图花板* 3.实现随笔画功能* 4.扩充菜单栏* 5.扩充性状态栏(按钮)*/
public class MiniDrawPad {private JFrame jFrame = new JFrame("迷你画图板");//带有标题和边框的顶层窗口//定义画图区域的高度和宽度private final int WIDTH = 1000;private final int HEIGHT = 700;private MyPanel mp = new MyPanel();//定义一个BufferedImage对象,并获取image对象的Graphics-画笔BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);//指定一个宽和高,创建一个不带透明色的对象Graphics2D g = (Graphics2D) image.getGraphics(); //获得在图像上画图的工具-画笔//设置画笔的颜色private Color color = Color.black; //当前默认颜色黑色//画笔的粗细private float stroke = 1.0f;//上一次鼠标拖动事件的鼠标坐标private int prex = -1;private int prey = -1;int R, G, B; //用来存放当前的色彩值String style1; //用来存放当前字体JLabel statusBar;//当前鼠标状态//创建画板类public class MyPanel extends JPanel {//设置画板public MyPanel() {setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));setBounds(0, 0, WIDTH, HEIGHT);setBackground(Color.WHITE);}public void paint(Graphics g) {g.drawImage(image, 0, 0, null);//img-要绘制的指定图像,如果为null,该方法不执行任何操作}}//选择颜色public void chooseColor() {color = JColorChooser.showDialog(jFrame, "选择颜色", color);R = color.getRed();G = color.getGreen();B = color.getBlue();color = new Color(R, G, B);}//获取画笔//创建菜单条public void createBar() {JMenuBar bar = new JMenuBar();//定义菜单条JMenu fileMenu = new JMenu("file");//fileMenu.setMnemonic('F');//表示助记符的键代码JMenuItem newItem = new JMenuItem("New");//菜单项newItem.setMnemonic('N');JMenuItem saveItem = new JMenuItem("Save");//菜单项saveItem.setMnemonic('S');JMenuItem openItem = new JMenuItem("Open");//菜单项openItem.setMnemonic('O');//退出菜单项JMenuItem exitItem = new JMenuItem("Exit");//菜单项exitItem.setMnemonic('E');exitItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});fileMenu.add(newItem);fileMenu.add(saveItem);fileMenu.add(openItem);fileMenu.addSeparator();fileMenu.add(exitItem);//颜色菜单JMenu colorMenu = new JMenu("Color");JMenuItem colorItem = new JMenuItem("Choose Color");colorItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//如果被触发,则调用选择颜色函数段chooseColor();}});colorMenu.add(colorItem);//设置线条粗细菜单JMenu strokeMenu = new JMenu("Stroke");JMenuItem strokeItem = new JMenuItem("Set Stroke");strokeItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//如果被触发,则调用设置线条粗细的函数段setStroke();}});strokeMenu.add(strokeItem);//设置提示菜单JMenu helpMenu = new JMenu("Help");JMenuItem aboutItem = new JMenuItem("About this Draw pad!");aboutItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "this is a mini draw pad Copy(c)2020","画图板程序说明", JOptionPane.INFORMATION_MESSAGE);}});helpMenu.add(aboutItem);bar.add(fileMenu);bar.add(colorMenu);bar.add(strokeMenu);bar.add(helpMenu);jFrame.setJMenuBar(bar);}//设置线条粗细public void setStroke() {String input = JOptionPane.showInputDialog("请输入一个float数值( >0 )");stroke = Float.parseFloat(input);}//创建按钮public void createButton() {JToolBar buttonPanel = new JToolBar(JToolBar.HORIZONTAL);String[] buttonNames = {"随笔", "直线", "空心圆", "空心矩形", "橡皮擦", "文字按钮"};for (int i = 0; i < buttonNames.length; i++) {JButton button = new JButton(buttonNames[i]);buttonPanel.add(button);}//设置字体风格的选择String[] styleNames = {"宋体", "隶书", "楷体", "仿宋", "华文行楷", "方正舒体", "仿宋_GB2312", "Serif"};JComboBox styles = new JComboBox<>(styleNames);styles.setMaximumRowCount(6);  //设置JComboBox显示的最大行数styles.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {style1 = styleNames[styles.getSelectedIndex()];}});styles.setMinimumSize(new Dimension(50, 20));styles.setMaximumSize(new Dimension(120, 20));JCheckBox bold = new JCheckBox("BOLD"); //复选框JCheckBox italic = new JCheckBox("ITALIC"); //buttonPanel.add(bold);buttonPanel.add(italic);buttonPanel.add(styles);statusBar = new JLabel("当前的鼠标状态");statusBar.setText("welcome minidraw pad!!!");Container c = jFrame.getContentPane();//初始化一个容器c.add(buttonPanel, BorderLayout.NORTH);c.add(statusBar, BorderLayout.SOUTH);}public void init() {/**对于鼠标的移动和拖放,用鼠标运动监听器MouseMotionListener*/mp.addMouseMotionListener(new MouseMotionAdapter() {@Overridepublic void mouseDragged(MouseEvent e) {if (prex > 0 && prey > 0) {g.setColor(color);g.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));g.drawLine(prex, prey, e.getX(), e.getY());//x1,x2是确定直线的起始点,分别是横纵坐标,同理x2,y2确定直线的终点}prex = e.getX();prey = e.getY();statusBar.setText("Mouse Press @[" + e.getX() + "," + e.getY() + "]");mp.repaint(); //重绘mp对象}});jFrame.setBounds(0, 0, WIDTH, HEIGHT);jFrame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});g.fillRect(0, 0, WIDTH, HEIGHT);jFrame.add(mp);createBar();createButton();jFrame.setVisible(true);}public static void main(String[] args) {MiniDrawPad miniDrawPad = new MiniDrawPad();miniDrawPad.init();}}

由于时间关系,没能做完,只是半成。。。 以后有时间再继续完成把。

画图工具-mini画板相关推荐

  1. python脚本绘图_python实现画图工具

    简易画图工具(Python),供大家参考,具体内容如下 小黑最近在努力的入门python,正好学习到了Python的tkinker模块下的Canvas(画布)和Button(按钮)再加上相应的事务管理 ...

  2. python+windows画图工具--复现别人论文中的colormap 方法2

    如何复现别人论文中的colormap2 首先,将别人论文中的colormap截图之后,拖到windows自带的画图工具中,选择吸管工具,然后点击其中一个颜色,(这里以图中的蓝色为例),再点击吸管工具, ...

  3. JS实现简易画图工具

    [Canvas]画布 Canvas为HTML5中新加入的标签, JS 可在上面进行绘画,Canvas一个矩形的单元.Canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 绘制图形的步骤 ...

  4. 简易画图工具(Python)

    简易画图工具(Python) 小黑最近在努力的入门python,正好学习到了Python的tkinker模块下的Canvas(画布)和Button(按钮)再加上相应的事务管理,实现了一个简单的画图小工 ...

  5. 在线画图工具【高仿rose】方便地画工作流

    在线画图工具 http://www.mxgraph.com/demo/mxgraph/editors/diagrameditor.html     无意间发现了在线画图.图片处理的工具,有些很不错,有 ...

  6. Java课程设计-画图工具

    摘要 根据Windows自带的画图工具,进行简单的仿照,运行后用户可以实现简单的绘画,例如画三角形.多边形.矩形.曲线.直线,用户还可以根据需要选择喜欢的颜色进行绘画,并做到改变窗口大小或最小化窗口后 ...

  7. 怎样用计算机画图抠图,画图抠图透明,画图工具怎么改底色

    Windows画图这个工具已经存在于很久了,微软也很久没有更新他,在以往我们可能还会打开用用,现在大多用户不会去碰它,但是在新版的Win10系统下,微软另人意外的更新了Win10画图工具,更新了许多实 ...

  8. python实现画图工具

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 简 ...

  9. 或许你想要的画图工具在这里

    之前文章发布后,有小伙伴问下面的画怎么画的(偷偷告诉你,其实我是用铅笔+水彩笔画的),哈哈,开玩笑了.其实这些图都是用Excalidraw 画出来的. 我们平常不管是工作中,还是在日常写文章,都会接触 ...

最新文章

  1. linux安装jdk教程
  2. py2数据分析_利用数据
  3. 百度搜索结果 转换_如何让图片出现在百度搜索结果里出现?
  4. 一次作死尝试:将自己的linux用rm -rf /会怎样?结果哭了。。
  5. 【蓝鸥Unity开发基础三】课时14 刚体
  6. [转]揭开正则表达式的神秘面纱
  7. javascript operators(操作符)
  8. NUC1429 WERTYU【输入输出+水题】
  9. 【渝粤教育】21秋期末考试组织行为学10068k2
  10. 总结:常用的 Python 爬虫技巧
  11. 手机java版怎么换皮肤_手机QQ皮肤更换方法(安卓版)
  12. smartsvn 忽略文件夹_Smart SVN-使用Smart SVN 管理项目代码文件(在windows上)
  13. 诺基亚 java 软件_初学篇:诺基亚手机软件安装不求人
  14. Java封装e4a_E4A类库封装从入门到放弃
  15. 点宽与江苏大学建设量化金融实训平台项目
  16. 运行自己的 Daemoet - 每天5分钟玩转 Docker 容器技术(131nS)
  17. 1.6W Star 的「黑魔法」,非常实用!
  18. 三维旋转矩阵;东北天坐标系(ENU);地心地固坐标系(ECEF);大地坐标系(Geodetic);经纬度对应圆弧距离
  19. 【面试专栏】第五篇:Java基础:集合篇-LinkedHashMap、ConcurrentHashMap、TreeMap
  20. 项目管理文档_PPM优课第18期 | 不同项目管理模式“武装”质量管理体系的搭建...

热门文章

  1. 手把手教程序员如何追到女神(附详细教程)
  2. 手把手教你下载VS2022(超详细)
  3. 用子查询的方法查找研发部比财务部所有雇员收入都高的雇员的姓名
  4. 测测你的情商——欧洲流行的EQ测试题
  5. python的三种字符串格式化方法
  6. C语言依然位居榜单前列,依然值得程序员学习
  7. 隐式链接隐式链接_在木材上隐式标签选择
  8. 始终快人一步,我的华为云CDN加速比你好
  9. YB时代即将来临,三问数据存储
  10. 谁能引领国内人工智能芯片产业突围?