/*huatu继承监听接口,在main中监听时才产生,且匿名
*
*Container=e.getSource()
*Container.getGraphics()
*
*e.getActionCommand()
*e.getActionCommand().equals("hong"),不可以用==
*
*p=getContentPane(),p监听画图动作
*
*hxz*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class HuaTu implements MouseMotionListener,ActionListener{
static final int r=3;
static int ox, oy;
static int flag=1;
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("红")){//hxz不能用==
flag=1;
}
else if (e.getActionCommand().equals("黑")){
flag=2;
}
else if (e.getActionCommand().equals("退出"))
System.exit(0);
}
public void mouseDragged(MouseEvent e){
Container c=(Container)e.getSource();//Container=e.getSource()
Graphics g=c.getGraphics();//Container.getGraphics
if (ox>=0) {//移动时ox=-1
if(flag==1){
g.setColor(new Color(168,0,255));
g.drawLine(ox,oy,e.getX(),e.getY());}
else{
g.setColor(new Color(0,0,0));
g.drawLine(ox,oy,e.getX(),e.getY());}
}
ox=e.getX();oy=e.getY();
}
public void mouseMoved(MouseEvent e){
ox=-1;oy=-1;
}
public static void main(String arg[]){
JFrame f=new JFrame("Paint");
Container p=f.getContentPane();
p.setLayout(new FlowLayout());
JButton jButton1 = new JButton("红");
JButton jButton2 = new JButton("黑");
JButton jButton3 = new JButton("退出");
//Graphics g.setColor(new Color(255,0,0));
//ButtonEvent arg=new ButtonEvent(arg);
jButton1.addActionListener(new HuaTu());//huatu继承监听接口
jButton2.addActionListener(new HuaTu());
jButton3.addActionListener(new HuaTu());
p.addMouseMotionListener(new HuaTu());//contentPane监听
p.add(jButton1);
p.add(jButton2);
p.add(jButton3);
f.setSize(200,200);
f.setVisible(true);
}
}
分享到:
相关推荐
C++实现的三次贝塞尔曲线绘制,可拖动控制点修改曲线形状,包含源代码和可执行文件,VS2008的工程。 C++实现的三次贝塞尔曲线绘制,可拖动控制点修改曲线形状,包含源代码和可执行文件,VS2008的工程。
在Java代码中,你可能会看到如下的伪代码结构: ```java public class BezierCurve { private Point[] controlPoints; public BezierCurve(Point[] points) { this.controlPoints = points; } public Point ...
贝塞尔曲线是一种在计算机图形学...总结来说,贝塞尔曲线是计算机图形学中的重要工具,C++源代码可以帮助开发者直观地理解这种曲线的生成过程。通过学习和实践,不仅可以掌握基础的数学原理,还能提高图形编程的能力。
本资料包“JAVA画图形学(文档+源代码)”包含两部分:文档和源代码,旨在帮助学习者深入理解Java图形编程。 文档部分可能涵盖以下内容: 1. **基础概念**:介绍Java图形学的基本概念,如坐标系统、颜色模型、形状...
MATLAB绘制 维维安尼Viviani曲线 源代码程序.rarMATLAB绘制 维维安尼Viviani曲线 源代码程序.rarMATLAB绘制 维维安尼Viviani曲线 源代码程序.rarMATLAB绘制 维维安尼Viviani曲线 源代码程序.rarMATLAB绘制 维维安尼...
总的来说,"vc 画图实时曲线源代码"项目可能包含以上这些技术的实现,通过学习和理解这个源代码,开发者可以掌握如何在VC++环境下创建实时更新的图形界面,这对于进行数据分析和监控应用的开发具有很高的价值。
椭圆曲线加密算法(Elliptic Curve Cryptography, ECC)是一种...然而,需要注意的是,虽然ECC在某些方面优于传统算法,但它的实现也要求更高的数学背景和更复杂的计算,因此理解和调试ECC源代码需要一定的专业知识。
在Java编程领域,一个"java做的画板源代码"项目通常是一个基于图形用户界面(GUI)的应用程序,它允许用户通过鼠标或触摸设备在屏幕上绘制图形和线条。这个项目不仅展示了Java的基础知识,还涉及了Java Swing或...
用小程序画得正弦曲线,简短易懂,居家必备。
Java绘图板是一款基于Java语言开发的简单图形编辑器,它允许用户绘制各种形状并添加文字,同时提供了调整画笔粗细和保存图像的功能。这个项目对于初学者来说,是学习Java图形用户界面(GUI)编程的一个好实例,尤其...
接下来,我们关注的是"贝塞尔曲线画心形"的源代码,这表明作者已经使用贝塞尔曲线构造了一个心形图案。心形是一种常见的图形,通常在游戏和应用中用作装饰元素或情感表达。通过贝塞尔曲线,我们可以精确地控制心形的...
本文将基于提供的源代码文件,解析如何在VC++中实现曲线的绘制,并介绍相关编程概念和技术。 首先,"绘制曲线vc源代码"的标题表明这是一组用于在Microsoft Visual C++环境下绘制曲线的程序代码。在Windows编程中,...
本文通过对“万花规JAVA源代码”的分析,展示了如何使用Java实现一个能够绘制复杂曲线的程序。这种程序不仅可以作为教育工具帮助学生理解数学原理,还能作为一个简单的艺术创作工具,激发人们的创造力。对于Java初学...
在提供的压缩文件"Koch"中,可能包含了一个Java源代码文件,用于实现上述过程。代码可能包含一个主类,该类定义了线段类、Koch规则应用方法以及绘图逻辑。通过阅读和理解这段代码,你可以学习到如何将数学概念转化为...
这个名为"Java源代码常用图形的绘制.rar"的压缩包包含了一系列的Java源代码示例,总计300个例子,旨在帮助学习者理解和掌握在Java中如何绘制各种常见的图形。下面我们将深入探讨这些知识点。 1. **Java AWT和Swing...
这篇文档将深入解析标题和描述中提及的"曲线显示源代码",以及与之相关的编程概念和技术。在软件开发中,特别是在科学计算、数据分析和可视化领域,曲线显示是一种常见的需求,用于展示数据的变化趋势或者函数的图形...
MSP430单片机用12864液晶绘制DS18B20温度曲线源代码 MSP430单片机用12864液晶绘制DS18B20温度曲线源代码 MSP430单片机用12864液晶绘制DS18B20温度曲线源代码 MSP430单片机用12864液晶绘制DS18B20温度曲线源代码 MSP...
在这个案例中,“双曲线绘图控件源代码”可能包含C++、C#、Java或Python等编程语言的代码文件,这些代码文件实现了绘制双曲线的功能。开发者可以利用这些源代码来学习如何在自己的应用中实现类似的图形界面功能,...
"VC 实时曲线绘制 源代码" 提供了一个实用的解决方案,它可以帮助开发者快速实现动态更新的图形界面,展示随着时间变化的数据。这个代码库可能包含了一些关键组件和算法,使得在VC++中创建交互式的曲线绘制变得简单...
Java生成曲线图是一种常见的数据可视化需求,特别是在数据分析、科学计算以及软件开发中。在这个场景下,JFreeChart 是一个强大的 Java 库,它为开发者提供了丰富的图表类型,包括曲线图,用于直观地展示数据趋势。...