这是我刚开始学习Java的另一个实例,先上图。。
首先也是先从界面开始,第一就是主要面板,就是一个JFrame,前面的按钮是JRadioButton,然后还有一个
JComboBox下拉列表
public void UI() { //主界面 jf.setTitle("黄飞自创画图板");//标题 jf.setSize(500, 300);//大小 jf.setLocation(400, 400);//初始位置 jf.setLayout(new FlowLayout(FlowLayout.LEFT));//布局 jf.setResizable(false);//是否可以改变大小 jf.setDefaultCloseOperation(3);//点击关闭按钮退出程序 JButton jb = new JButton("选颜色"); // jc=new JComboBox<String>();//一个下拉列表 //添加各种选项 jc.addItem("6"); jc.addItem("12"); jc.addItem("24"); //”直线“按钮 JRadioButton jr1 = new JRadioButton("直线"); jr1.setActionCommand("直线"); //添加监听 jr1.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=false; f2=false; } }); //“圆”按钮 JRadioButton jr2 = new JRadioButton("圆"); jr2.setActionCommand("圆"); jr2.addActionListener(new ActionListener(){//添加监听 @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=false; f2=false; } }); //“举行”按钮 JRadioButton jr3 = new JRadioButton("矩形"); jr3.setActionCommand("矩形"); jr3.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=false; f2=false; } }); JRadioButton jr4 = new JRadioButton("铅笔"); jr4.setActionCommand("铅笔"); jr4.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=true; f2=false; } }); JRadioButton jr5=new JRadioButton("笔刷"); jr5.setActionCommand("笔刷"); jr5.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=true; f2=false; } }); JRadioButton jr6=new JRadioButton("橡皮"); jr6.setActionCommand("橡皮"); jr6.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub f=true; f2=true; } }); //bg是一个buttonGroup对象,用来存放按钮 bg.add(jr1); bg.add(jr2); bg.add(jr3); bg.add(jr4); bg.add(jr5); bg.add(jr6); //将按钮添加到窗体上去 jf.add(jr1); jf.add(jr2); jf.add(jr3); jf.add(jr4); jf.add(jr5); jf.add(jr6); jf.add(jb); jf.add(new JLabel("尺寸")); jf.add(jc);
其中对按钮的监听只是改变f的值,f后面会用到,来控制一些方法,然后,要说的的就是,用了一个ButtonGroup啦储存按钮,这样我就可以通过ButtonGroup里面的getSelection().getActionCommand()来得到目前是哪个按钮被按下了,这样才能在画图的监听方法中来具体实现画那种图
// 监听选颜色按钮 jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub showColorSelecter();//显示颜色选择器 } });
添加一个按钮监听来实现对颜色的选择
// 颜色选择函数 private void showColorSelecter() { if(f2==false){ color = JColorChooser.showDialog(null, "请选择颜色", Color.black);} }
JColorChooser.showDialog(null, "请选择颜色", Color.black);实现下面的东东,并且返回您选择的颜色
以下方法可以实现在面板上对鼠标的监听
jf.addMouseMotionListener(me);//添加鼠标监听,
jf.addMouseListener(me);//添加鼠标监听
其中的me是一个MouseAdapter对象,他继承了很多鼠标监听的接口,具体查看API文档
具体实现的方法
private MouseAdapter me = new MouseAdapter() {//一个鼠标监听对象 public void mousePressed(MouseEvent e) {//鼠标按下 x1 = e.getX(); y1 = e.getY(); } public void mouseReleased(MouseEvent e) {//鼠标抬起 x2 = e.getX(); y2 = e.getY(); g.setColor(color); // g.drawLine(x1,y1,x2,y2); Huatu(); } public void mouseDragged(MouseEvent e){//鼠标拖动 if(f==true){ x2 = e.getX(); y2 = e.getY(); g.setColor(color); Huatu(); x1 = x2; y1 = y2; } } };
huatu方法
private void Huatu() { if (bg.getSelection().getActionCommand().equals("铅笔")) { g.drawLine(x1, y1, x2, y2);//画线 } if (bg.getSelection().getActionCommand().equals("直线")) { g.drawLine(x1, y1, x2, y2); } if (bg.getSelection().getActionCommand().equals("矩形")) { //画矩形,参数为左上角坐标,长和宽 if(x1>x2&&y2>y1){ g.drawRect(x2,y1,x1-x2,y2-y1); } if(x2>x1&&y1>y2){ g.drawRect(x1,y2,x2-x1,y1-y2); } if(x1>x2&&y2<y1){ g.drawRect(x2,y2,x1-x2,y1-y2); } else{ g.drawRect(x1,y1,x2-x1,y2-y1); } //g.drawRect(x1, y1, Math.abs(x2 - x1), Math.abs(y2 - y1)); } //画圆,参数为外接矩形左上角坐标,长和宽 if (bg.getSelection().getActionCommand().equals("圆")) { if(x1>x2&&y2>y1){ g.drawOval(x2,y1,x1-x2,y2-y1); } if(x2>x1&&y1>y2){ g.drawOval(x1,y2,x2-x1,y1-y2); } if(x1>x2&&y2<y1){ g.drawOval(x2,y2,x1-x2,y1-y2); } else{ g.drawOval(x1,y1,x2-x1,y2-y1); } } if(bg.getSelection().getActionCommand().equals("笔刷")){ if(jc.getSelectedItem().equals("6")){ n=6.0f; } if(jc.getSelectedItem().equals("12")){ n=12.0f; } if(jc.getSelectedItem().equals("24")){ n=55.0f; } g.setStroke(new BasicStroke(n)); g.drawLine(x1, y1, x2, y2); g.setStroke(new BasicStroke(1.0f));//设置画笔的大小 } if(bg.getSelection().getActionCommand().equals("橡皮")){ if(jc.getSelectedItem().equals("6")){ n=6.0f; } if(jc.getSelectedItem().equals("12")){ n=12.0f; } if(jc.getSelectedItem().equals("24")){ n=55.0f; } g.setColor(g.getBackground()); g.setStroke(new BasicStroke(n)); g.drawLine(x1, y1, x2, y2); g.setStroke(new BasicStroke(1.0f)); g.setColor(Color.black);//设置颜色 } }
其中的橡皮,只是把颜色换成背景色而已。。getSelectedItem().是获取下拉列表中你选择的数据
这个例子对实现鼠标监听,Graphcs类有个很好的加深,鼠标监听用来获取鼠标坐标
源代码已经上传,又不懂之处可以找我,或者留言,505860922
相关推荐
非常适合加强java基础的人来练手 完整的画图板项目,模仿win10自带画图板写的 很有学习价值
通过两个类就可以实现简单的画图板程序,实现画直线,圆形,矩形,橡皮擦,喷枪,橡皮擦,矩形,椭圆,圆角矩形,弧线,多边形,图形等功能,同时实现颜色的选择
java 画图板 基本画笔代码 可以在次基础上进行拓展功能
Java实现绘图板的基础功能。 主要用于语言学习时交流使用。 可以保存和读取绘图文件。
3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- ----------------------------...
一个有趣的画图板, 用了 HTML5中的本地存储、下载、canvas 等技术,这个项目中用到了canvas 的很多基础功能,初学者可以学习一下 。 建议开发童鞋使用跨平台开发工具——统一开发环境UDE来进行查看、调试、开发哦~...
第23课和24课是综合应用篇,分别讲解了使用Java开发画图板和数据库项目——公司管理系统的方法和流程。 内容全面,非常适合于Java技术的初学者,同时也适合具有一定Java基础,欲对Java开发技术进一步了解和掌握的...
第23课和24课是综合应用篇,分别讲解了使用Java开发画图板和数据库项目——公司管理系统的方法和流程。 内容全面,非常适合于Java技术的初学者,同时也适合具有一定Java基础,欲对Java开发技术进一步了解和掌握的...
应用软件:word ,ppt,画图板,… 人机交互方式: 图形化界面 vs 命令行方式 应用程序 = 算法 + 数据结构 2.计算机语言的发展迭代史 第一代:机器语言 第二代:汇编语言 第三代:高级语言 面向过程:C,Pascal、...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同...
本次课程设计,我们选择的题目是简单绘图板程序。以Visual Studio 2005平台进行设计,Visual Studio 2005是一套完整的开发工具集,包含了大量的功能。他不但结合了C++强大灵活和Java语言简洁等特性,而且还吸收了...
学生提问:为什么有栈内存和堆内存之分? 93 4.6.2 基本类型数组的初始化 95 4.6.3 引用类型数组的初始化 96 4.6.4 没有多维数组 99 学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样...
基于java语言,实现了基本的画板功能,自己做的,有需要的可以看看
第1篇 Java开发必备基础 第1章 搭建Java开发环境 1.1 Java的过去、现在和未来 1.1.1 Java的历史 1.1.2 Java的语言特点 1.1.3 Java API简介 1.1.4 Java未来发展 1.2 Java程序设计环境 1.2.1 命令行工具——JDK 6.0 ...
目录 引 言 7 第一章 绪论 8 1.1.1 计算机图形图像学的发展简史 8 1.1.2现有图形图像处理软件 8 1.2 课题研究的目的及意义 9 第二章 图形图像处理软件开发技术基础 10 2.1 Java Swing 简介 10 2.1.1 Swing的特性 10 ...
我在这些功能的基础上添加了全选、时间/日期、设置粗体、设置斜体、设置自动换行等功能(使用添加@Action的方法),并利用Windows自身的资源添加了NotePad、计算器、画图、放大器、屏幕键盘、剪贴薄查看器等工具以及...