Java Swing实现画板,可以打开,保存,基本图形,画笔设定

您所在的位置:网站首页 java如何画矩形 Java Swing实现画板,可以打开,保存,基本图形,画笔设定

Java Swing实现画板,可以打开,保存,基本图形,画笔设定

2023-12-03 22:43| 来源: 网络整理| 查看: 265

Java Swing实现画板

https://github.com/nekoer723/drawpic

源码已上传

基本要求:

新建一个空白图形文件

打开或者保存一个图形文件

绘制基本图形

直线、矩形、圆、椭圆

任意线

添加文字

设定颜色与文字风格

优化:

设定画笔 橡皮擦 操作撤销 画线与图形的预览 1.面板UI设计与实现 1.设计

总窗口

布局flowlayout 设置关闭方式 窗体大小不变

菜单栏

3个面板(Jpanel),jp1,jp2,jp3

jp1(左侧按钮,15行,1列)

布局Gridlayout(rows:15,clos:1,hgap:10,vgap:10)

jp2(画板)

重构 paint函数 背景颜色白色

jp3(画笔颜色以及粗细)

布局GridLayout(1行,颜色数组的长度列) Jslider (滑块,调节画笔粗细) 2.实现

重构paint函数

public void paint(Graphics g1) { g=(Graphics2D)g1; //画船体 System.out.println("repaint"); super.paint(g); list = dl.list; for (Shape1 l : list) { l.draw(g); } } //public ArrayList list = new ArrayList();

list是一个shape1类的数组,里面储存有图像信息,通过对list里图像信息的重绘来实现画板的更新

注意为组件添加监听类

2.画板监听类

这个类实现了所有左侧按钮功能,以及对底部jp3中的颜色

定义了图形类,并实现了基本图形

1.画板监听 public class picListener implements ActionListener, MouseListener, MouseMotionListener{ private Color color = Color.BLACK; private Graphics2D g; //画笔属性 private String str;//保存按钮上的字符串。区分不同的按钮 private int x1,y1,x2,y2;//坐标 private JButton nowColor;//当前颜色 private float width;//画笔粗细 private int flag1 = 0; //预显示 private Shape1 flag2 = new ImpLine(-1,-1,-1,-1,Color.WHITE,0);//用于撤销操作的标志 public static ArrayList list =new ArrayList();

撤销操作是我自己实现,读者可以尝试用undo函数,比较简单

@Override public void actionPerformed(ActionEvent e) { //判断是颜色按钮还是图形按钮 if ("".equals(e.getActionCommand())) { JButton jb = (JButton) e.getSource(); color = jb.getBackground(); nowColor.setBackground(color);//处理当前颜色 } else { str = e.getActionCommand(); if("文本框".equals(str)) { pic2.paint.textin.setVisible(true); System.out.println(pic2.paint.getDl().getG().getFont().getName()); } else if ("清空".equals(e.getActionCommand())) { list.removeAll(list); pic2.paint.jp2.repaint(); } else if ("撤销".equals(e.getActionCommand())) { //list.remove(list.size() - 1); int t =list.size(); int fff = 0; for(int i = 1; i fff=1; } } if(fff == 1){ for(int i = 0; i list.remove(list.size() - 1); System.out.println("撤销"); pic2.paint.jp2.repaint(); break; } else { list.remove(list.size() - 1); } } } //list.remove(list.size() - 1); //pic2.paint.jp2.repaint(); } } } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { g.setColor(color);//改变画笔的颜色 x1=e.getX();//获取按下时鼠标的x坐标 y1=e.getY();//获取按下时鼠标的y坐标 if("画曲线".equals(str) ||"画直线".equals(str) ||"矩形".equals(str) ||"圆形".equals(str) ||"椭圆".equals(str)||"实心圆形".equals(str) ||"橡皮擦".equals(str)){ System.out.println("press"); list.add(flag2); } } @Override public void mouseReleased(MouseEvent e) { //list.add(flag2); if(flag1 > 0) { System.out.println("removeflage"); list.remove


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3