简单画板实现的总结
一.实现简单画板需要使用的JavaAPI类:
JFrame
JPanel
JButton
JMenuBar
JMenu
JMenuItem
MouseListener
MouseEvent
ActionListener
ActionEvent
绘制图形图像的对象
Graphics
String
二. 匿名内部类
1.没有类名,不需要class。
2.在另外一个类的{}中间。
3.超过四行代码就不考虑使用,可考虑新建一个类。
三.实现一个简单画板的步骤
1.定义好界面类。
2.给按钮添加动作监听器方法,绑定事件处理类的对象。使用的是匿名内部类。
(使用参数传递)
3.给绘图面板添加动作监听器方法,绑定事件处理类的对象定义一个类实现MouseListener接口。
/**************************练习**********************************/
总结:
1.要学会灵活运用变量。当没有现成的java方法能够直接解决问题的时候,可将思路打开,思考其他可行的方法,比如可以使用变量。在这次练习中的三角形画法中,如果运用了变量,问题也就能轻松搞定了。
1).将变量作中间变量使用
exp:
声明全局变量(DrawingListener中)
private int startX, startY, endY, endX;// 中间变量,用来存储第一条线的起始点和结束点
2)将变量作计数器使用
exp:
private int count = 0;// 计数器,用来统计三角形的图形执行到第几步
2.画三角形时,画线和单击是两个不同的事件。如果你的代码是这样:
public void mouseClicked(MouseEvent e1) {
System.out.println("单击");
x3 = e1.getX();
y3 = e1.getY();
if (dr.getShapes().equals("Triangle") && count == 1) {
// 绘制三角形
g.drawLine(x1,y1, x3, y3);
g.drawLine(x2,y2, x3, y3);
//将count的值转为第一次点击三角形
count=0;
}
那么你画三角形时首先要画的第一条直线就不能成功。原因是:单击这个动作包括了按下、释放、单击三个动作。如果你的代码是如上写法,那么你的x1,x2,x3所在的坐标点都是同一个点。也就是说,你根本没在画直线,你不过是在单击而已!
所以你的代码应是这样:(其中startX是x1的中间变量,它可用来存储直线的x1的地址;
startY是y1的中间变量,它可用来存储直线的y1的地址;
endX是x2的中间变量,它可用来存储直线的x2的地址;
endY是y2的中间变量,它可用来存储直线的y2的地址;)
public void mouseClicked(MouseEvent e1) {
System.out.println("单击");
x3 = e1.getX();
y3 = e1.getY();
if (dr.getShapes().equals("Triangle") && count == 1) {
// 绘制三角形
g.drawLine(startX, startY, x3, y3);
g.drawLine(endX, endY, x3, y3);
//将count的值转为第一次点击三角形
count=0;
}
3. 要获取画布对象就必须在窗体可见之后才能获取,否则获取Null。
4. 类实现接口的时候,必须要实现接口中所有的抽象方法。就算有的抽象方法暂时用不到,也要把它放在你的类里!
5.画图形的时候,要考虑鼠标按下和释放的坐标值大小不同的情况。
exp:
if((x1>x2)&&(y1>y2)){
g.drawRect(x2, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x2>x1)&&(y2>y1)){
g.drawRect(x1, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x2>x1)&&(y1>y2)){
g.drawRect(x1, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x1>x2)&&(y2>y1)){
g.drawRect(x2, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
分享到:
相关推荐
一个简易画板的实现 有简单的画图,画图形,改颜色功能
刚开始学HTML5中的canvas,实现的一个简易的画板。(只注重了功能的实现,没有对样式添加太多)
火山安卓高级画板实现画板开发源码
高频PCB板画板心得总结docx,高频PCB板画板心得总结
易语言画板实现简单的验证码。@风间琉璃。
vc 画板 画图 源代码
易语言画板列表源码例程程序结合易语言扩展界面支持库,使用画板实现列表功能。点评:易语言画板列表源码是易语言画板组件应用例程。
Android 短代码实现 最简易的画板
Python开发的PyGame实现简易画板_Demo
在手机上实现简易的画板功能,代码较少,比较适合初学者,一看即懂
用Java实现的图形界面的简易画板程序,能够话出一般常见的形状
画板的简单实现,一些小功能。。。。。跟电脑自带画板差不多
通过使用Opencv来实现画板功能的源程序。
VC++课程设计,windows简单画板,可以画直线、矩形、椭圆、改颜色、线条;清除,保存打开功能。
这是我初学qt编写的简易画板程序,程序结构和算法不算优秀,请多多指教
使用Android的自定义View写的Android画板程序,主要使用DrawPath()实现,需要的童鞋可以下来看看。
使用python做的一个简易画板,能够实现画点、画直线、画多边形、画椭圆等功能,其中包含了对Tkinter的操作以及对于GUI的操作,希望对python初学者能够有所帮助
用VC开发工具编写的MFC简易画板,可以实现类似与windows自带画板的一些功能
用qt做的简易画板,能够实现图形,颜色,线宽选择。用鼠标移动操作。