JAVA画板,java简单画图板完整代码
爪哇制作简单画板,包括两个类,一个主要画板类绘图板,一个画板监听器绘制监听器类。
1、绘图板类,包括画板,画板功能设计,保存图片等
打包爪哇课程设计;导入Java。awt。图形;导入javax。imageio。imageio导入javax。打印。医生风味。字符串;导入javax。挥棒。图像图标;导入javax。挥棒。jdialog导入javax。挥棒。jfile选择器;导入javax。挥棒。jframe导入javax。挥棒。jlabel导入javax。挥棒。jmenu导入javax。挥棒。jmenubar导入javax。挥棒。jmenuitem导入javax。挥棒。joptionpane导入javax。挥棒。jpanel导入javax。挥棒。jtextarea导入javax。挥棒。jtextfield导入javax。挥棒。ui管理器;导入javax。挥棒。unsupportedlookandfeelexception;导入Java。awt。awt异常;导入Java。awt。基本笔画;导入Java。awt。borderlayout导入Java。awt。颜色;导入Java。awt。组件;导入Java。awt。容器;导入Java。awt。维度;导入Java。awt。字体;导入Java。awt。图形2d;导入Java。awt。长方形;导入Java。awt。机器人;导入Java。awt。形状;导入Java。awt。窗户;导入Java。awt。事件。动作事件;导入Java。awt。事件。动作监听器;导入Java。awt。形象。缓冲图像;导入Java。awt。形象。颜色模型;导入Java。io。文件;导入Java。io。文件输入流;导入Java。io。filenotfoundexception导入Java。io。io异常;导入Java。util。ArrayList导入javax。挥棒。jbutton导入javax。挥棒。文件选择器。filenameextensionfilter公共类画板{静态颜色颜色1;public static void main(String[]args){ Drawpad DP=new Drawpad();DP。initui();} //创建一个窗口图形窗口public void initUI(){ JFrame JF=new JFrame();jf.setTitle(创意画图板(勿拖动));jf.setSize(1500,1000);JF。setdefaultcloseoperation(JFrame .EXIT _ ON _ CLOSE);//关闭时退出JF。setlocationrelativeto(null);//居中,不用定位窗口大小//创建字体,之后所有的字体为该字体字体f=新字体(方正仿宋简体,字体。粗体,20);//创建画笔监听器绘制监听器dl=新绘制监听器();//创建读取图片缓冲区图像(将图片加载到抽屉面板面板中)和画笔g,画笔英语字母表中第七个字母为在保存图片上进行图画BufferedImage bi=新的缓冲图像(1300,800,缓冲图像.TYPE _ INT _ ARGB);图形2d g=bi。创建图形();//初始化时填充白色g.setColor(颜色。白色);//先将图片填充为白色g.fillRect(0,0,1300,800);//
设置增加菜单栏,包括保存和新建两个按钮 JMenuBar box=new JMenuBar(); //在窗体上加菜单条,做一个菜单条,是菜单条,不是工具栏 //创建menubtn1保存按钮,并加上监听器,以图片的形式保存绘画板上的内容 JButton menubtn1=new JButton("保存"); //为保存按钮注册监听器 menubtn1.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { //创建文件保存窗口 JFileChooser f=new JFileChooser("保存"); int returnVal = f.showSaveDialog(null); File file1=null; if(returnVal == JFileChooser.APPROVE_OPTION) { file1 =f.getSelectedFile(); String name = f.getName(file1); try { ImageIO.write(bi, "PNG", new File(f.getCurrentDirectory(),name+".png")); } catch (IOException e) { //需抛出异常 // TODO Auto-generated catch block e.printStackTrace(); } } } }); /*JButton menubtn2=new JButton("打开"); //为打开按钮注册监听器 menubtn1.addActionListener(new ActionListener(){ @Override //获取当前画笔粗细 public void actionPerformed(ActionEvent arg0) { BufferedImage bimg = null; JFileChooser f=new JFileChooser("打开"); int returnVal = f.showOpenDialog(null); File file1=null; if(returnVal == JFileChooser.APPROVE_OPTION) { file1 =f.getSelectedFile(); String name = f.getName(file1); try { } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } });*/ //创建menubtn3退出按钮,并加上监听器,退出程序 JButton menubtn3=new JButton("退出"); menubtn3.addActionListener(new ActionListener(){ @Override //获取当前画笔粗细 public void actionPerformed(ActionEvent arg0) { int ret=JOptionPane.showConfirmDialog(null, "你确定要退出吗", "确认退出", JOptionPane.YES_NO_OPTION); if(ret==JOptionPane.YES_OPTION){ //“确认”退出程序 System.exit(0); } } }); box.add(menubtn1); // box.add(menubtn2); box.add(menubtn3); //jf.setJMenuBar(box); jf.setJMenuBar(box); //jf用BorderLayout布局 //北边,画板模式功能栏 JPanel funcPanel=new JPanel(); jf.add(funcPanel,BorderLayout.NORTH); //中间,画布 JPanel drawPanel=new JPanel(); jf.add(drawPanel,BorderLayout.CENTER); drawPanel.setPreferredSize(new Dimension(1000,700)); drawPanel.setBackground(dl.background); //一定要在画布上加上监听器!!1若画布没有加上监听器,无法显示 drawPanel.addMouseListener(dl); drawPanel.addMouseMotionListener(dl); //南边,为画笔颜色选择按钮 JPanel colorPanel=new JPanel(); jf.add(colorPanel,BorderLayout.SOUTH); //右边,为选择背景颜色按钮、画笔粗细选择按钮 JPanel backgroundPanel=new JPanel(); jf.add(backgroundPanel,BorderLayout.EAST); backgroundPanel.setPreferredSize(new Dimension(150,1000)); //左边,获取当前状态如:背景颜色、画笔颜色、画笔性质 JPanel nowPanel=new JPanel(); jf.add(nowPanel,BorderLayout.WEST); nowPanel.setPreferredSize(new Dimension(180,1000)); //左边放入当前状态Panel nowPanel.setBackground(Color.WHITE); JLabel label2=new JLabel("当前背景颜色"); label2.setFont(f); nowPanel.add(label2); //放入当前背景颜色 JButton nowbackgroundColor=new JButton(); nowbackgroundColor.setPreferredSize(new Dimension(60,60)); nowbackgroundColor.setBackground(Color.WHITE);//背景初始化为灰色 nowPanel.add(nowbackgroundColor); //放入当前画笔 JLabel label3=new JLabel("请选择画笔模式"); label3.setFont(f); nowPanel.add(label3); //放入当前画笔颜色 JButton nowColor=new JButton(); nowColor.setPreferredSize(new Dimension(60,60)); nowColor.setBackground(Color.BLACK);//画笔颜色初始化为黑色色 nowPanel.add(nowColor); //获取当前画笔模式 JLabel label4=new JLabel("当前画笔模式"); label4.setFont(f); nowPanel.add(label4); JTextField text=new JTextField(dl.btncontent); //获得选择画笔模式的按钮内容,得到当前画笔模式 text.setPreferredSize(new Dimension (160,60)); text.setFont(f); text.setEditable(false); //不可改 nowPanel.add(text); //获取当前画笔粗细状态 JLabel label6=new JLabel("当前画笔粗细(中)"); //默认粗细为中 label6.setFont(f); nowPanel.add(label6); JTextField text1=new JTextField("请选择画笔粗细"); text1.setPreferredSize(new Dimension (160,60)); text1.setFont(f); text1.setEditable(false); //不可编辑 nowPanel.add(text1); //输入需要添加的文字 JLabel label7=new JLabel("请输入文字:"); label7.setFont(f); nowPanel.add(label7); JTextField text2=new JTextField(); text2.setPreferredSize(new Dimension (160,60)); text2.setFont(f); nowPanel.add(text2); JLabel label8=new JLabel("请输入文字样式:"); label8.setFont(f); nowPanel.add(label8); JTextField text3=new JTextField("方正仿宋简体"); text3.setPreferredSize(new Dimension (160,60)); text3.setFont(f); nowPanel.add(text3); JLabel label9=new JLabel("请输入文字大小:"); label9.setFont(f); nowPanel.add(label9); JTextField text4=new JTextField("20"); text4.setPreferredSize(new Dimension (160,60)); text4.setFont(f); nowPanel.add(text4); //为获取文字内容加一个按钮并加上监听器 JButton getcontent=new JButton("获取文字"); getcontent .setFont(f); getcontent.setBackground(Color.YELLOW); getcontent.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { String content=text2.getText(); String mode=text3.getText(); String size=text4.getText(); dl.mode=mode; //获取文字样式 dl.content=content; //获取文字内容 dl.size=size; //获取文字大小 } }); nowPanel.add(getcontent); //最后在当前状态画板中加一个清除画布内容的功能 JButton clear=new JButton("清除"); clear.setFont(f); clear.setBackground(Color.RED); clear.addActionListener(dl); nowPanel.add(clear); //添加按钮到北边(每个按钮写两行代码太多,通过数组方式添加按钮) //加入标签(选择画笔模式) JLabel labelh =new JLabel("选择画笔模式"); labelh.setFont(f); funcPanel.add(labelh); //将按钮名字保存在数组中,后依次存储 String[] btnstr= {"画笔","直线","矩形","填充矩形","圆","填充圆","弧线","喷枪","波形","分形","长方体","九宫格递归","文字","橡皮"}; //将画笔状态按钮防置panel中 for( int i=0;i<btnstr.length;i++) { JButton btn=new JButton(btnstr[i]); funcPanel.add(btn); btn .setFont(f); btn.setBackground(Color.white); //加上画笔监听器 btn.addActionListener(dl); //加上监听器:获取当前 画笔模式 btn.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { text.setText(btn.getText()); //在当前模式加入选取的画笔模式 } }); }; //在BrderLayout布局SOUTH添加选择颜色按钮 JLabel label =new JLabel("选择画笔(橡皮)颜色"); label.setFont(f); colorPanel.add(label); //添加颜色按钮 Color[] colorArray = { Color.BLUE, Color.GREEN, Color.RED, Color.BLACK,Color.ORANGE,Color.PINK,Color.CYAN, Color.MAGENTA,Color.DARK_GRAY,Color.GRAY, Color.LIGHT_GRAY,Color.YELLOW,Color.WHITE}; //在布局管理器中添加颜色按钮 for( int i=0;i<colorArray.length;i++) { JButton button = new JButton(); button.setBackground(colorArray[i]); button.setPreferredSize(new Dimension(50, 50)); button.addActionListener(dl); colorPanel.add(button); //获取当前状态的画笔颜色
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。