`

JAVA 鼠标画直线举行椭圆

阅读更多
package GUIMouse;

//MouseDraw 
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class GUIMouse {
	private static JMenuBar jMenuBar1;

	public static void main(String[] args) {
		MouseFrame frame = new MouseFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		{
			jMenuBar1 = new JMenuBar();
			setJMenuBar(jMenuBar1);
		}
		frame.show();
		pack();
	}

	private static void pack() {
		// TODO Auto-generated method stub

	}

	private static void setJMenuBar(JMenuBar menuBar1) {
		// TODO Auto-generated method stub

	}
}

class MouseFrame extends JFrame {
	private Button bt;
	private Button bt1;
	private Button bt2;
	private Button bt3;

	public MouseFrame() {
		setTitle("利用鼠标画图");
		setSize(WIDTH, HEIGHT);
		// 将panel加入到frame
		BorderLayout bl = new BorderLayout();
		setLayout(bl);
		bt = new Button("Auto");
		bt1 = new Button("Line");
		bt2 = new Button("Qval");
		bt3 = new Button("Rect");
		MousePanel panel = new MousePanel();
		Container contentPane = getContentPane();
		contentPane.add(bt, BorderLayout.NORTH);
		contentPane.add(bt1, BorderLayout.EAST);
		contentPane.add(bt2, BorderLayout.SOUTH);
		contentPane.add(bt3, BorderLayout.WEST);
		contentPane.add(panel, BorderLayout.CENTER);
		bt.addActionListener(new SB());
		bt1.addActionListener(new SB());
		bt2.addActionListener(new SB());
		bt3.addActionListener(new SB());
	}

	private class SB implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			if (arg0.getSource() == bt) {
				MousePanel.setControl(1);
			}
			if (arg0.getSource() == bt1) {
				MousePanel.setControl(2);
			}
			if (arg0.getSource() == bt2) {
				MousePanel.setControl(4);
			}
			if (arg0.getSource() == bt3) {
				MousePanel.setControl(3);
			}
		}

	}

	public static final int WIDTH = 300;

	public static final int HEIGHT = 200;
}

class MousePanel extends JPanel {
	private Point pt;

	private Point old_Pt;

	private static int Control = 4;

	public MousePanel() {

		// 注册监听器
		addMouseListener(new MouseHandler());
		addMouseMotionListener(new MouseMotionHandler());
	}
	
	public static void setControl(int para){
		Control = para;
	}

	public void paintComponent(Graphics g) {
		if (Control == 1 || Control == 2)
			g.drawLine(pt.x, pt.y, old_Pt.x, old_Pt.y);
		if (Control == 3)
			g.drawRect(pt.x, pt.y, old_Pt.x - pt.x, old_Pt.y - pt.y);
		if (Control == 4)
			g.drawOval(pt.x, pt.y, old_Pt.x - pt.x, old_Pt.y - pt.y);
	}

	private class MouseHandler extends MouseAdapter {
		public void mousePressed(MouseEvent event) {
			if (Control > 1) {
				pt = event.getPoint();
			}
			if (Control == 1) {
				pt = event.getPoint();
				old_Pt = pt;
			}
		}

		public void mouseReleased(MouseEvent event) {
			// 得到鼠标光标的当前位置
			if (Control > 1) {
				old_Pt = event.getPoint();
				repaint();
			}
		}
	}

	private class MouseMotionHandler implements MouseMotionListener {
		public void mouseMoved(MouseEvent event) {
			// 得到鼠标光标的当前位置
		}

		public void mouseDragged(MouseEvent event) {
			// 得到鼠标光标的当前位置
			if (Control == 1) {
				old_Pt = pt;
				pt = event.getPoint();
				repaint();
			}
		}
	}
}
分享到:
评论
1 楼 haizhiguang 2012-06-22  
我按照你的代码自己写了一个试试,没看出我的代码跟你的有什么区别来,但是我的点击完鼠标之后怎么总是显示多个按钮,好像把按钮也在JPenal里面重绘了,有时间帮我看看吧,我很想使用这段代码谢谢!!!!



import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class DrawPad {
private static JMenuBar jMenuBar1; 
 
    public static void main(String[] args) { 
        DrawArea frame = new DrawArea(); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        { 
            jMenuBar1 = new JMenuBar(); 
            frame.setJMenuBar(jMenuBar1); 
        }
        frame.show(); 
        
    } 
}


class DrawArea extends JFrame {

/**
* @param args
*/

public  JButton yuan ;
public  JButton tuoyuan ;
public  JButton juxing;
public  JButton zhengfang ;
public  JToolBar jtoolbar ;
public  JButton choseColor;




public DrawArea(){
this.setSize(this.width, this.height);
BorderLayout bl = new BorderLayout(); 
        setLayout(bl); 
DrawPanel drawpanel=new DrawPanel();

Container cc =getContentPane();
yuan =new JButton("圆");
tuoyuan =new JButton("椭圆");
juxing =new JButton("矩形");
zhengfang =new JButton("正方形");
choseColor = new JButton("选择颜色");
   
cc.add(yuan,BorderLayout.NORTH);
cc.add(tuoyuan,BorderLayout.SOUTH);
cc.add(zhengfang,BorderLayout.WEST);
cc.add(juxing,BorderLayout.EAST);

cc.add(drawpanel,BorderLayout.CENTER);

init();
}

public void init(){

this.yuan.addActionListener(new ButtonHandler());
this.tuoyuan.addActionListener(new ButtonHandler());
this.juxing.addActionListener(new ButtonHandler());
this.zhengfang.addActionListener(new ButtonHandler());
this.choseColor.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
choseColor();
}
});
}
public void choseColor(){

}
private class ButtonHandler implements ActionListener{

public void actionPerformed(ActionEvent args){
if(args.getSource()== yuan){
DrawPanel.setcontrol(1);
}
if(args.getSource()==tuoyuan){
DrawPanel.setcontrol(2);
}
if(args.getSource()== juxing){
DrawPanel.setcontrol(3);
}
if(args.getSource()== zhengfang){
DrawPanel.setcontrol(4);
}

}
}

private static final int width=300;
private static final int  height =200;
}



class DrawPanel extends JPanel{

int index=0;
static int control=0;
int x,x1,y,y1;


public DrawPanel(){
//this.setBackground(Color.white);
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionListeners());
}

public static void setcontrol(int par)
{
control=par;
}
public void paintComponent(Graphics g){
if (control == 1 || control == 2)
{
g.setColor(new Color(200,34,54));
     g.drawOval(x, y, x1-x, x1-x);
}
     if(control == 2){
    g.drawOval(x, y, x1-x, y1-y);
     }
     if (control == 3) 
      g.drawRect(x, y, x1-x, y1-y); //矩形
        if (control == 4) 
            g.drawOval(x, y, x1-x, x1-x); //正方形
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent e)
{
x= e.getX();
y= e.getY();
}

public void mouseReleased(MouseEvent e){
if(control>1){
x1=e.getX();
y1=e.getY();

}
repaint();

}

}
private class MouseMotionListeners implements MouseMotionListener {

public void mouseMoved(MouseEvent e)
{

}
public void mouseDragged(MouseEvent e){
//repaint();
}
}
}

相关推荐

    基于java Swing画图程序(论文+源代码)(画直线、椭圆、矩形)

    本程序主要运用java2D提供的强大画图功能,来画直线、椭圆、矩形。首先,是在工具栏中选择要绘制的图形,然后通过鼠标的拖拽来完成图形的绘制。 真实感图形学是计算机图形的核心内容之一,是最能直接反映图形学魅力...

    用Java画直线,矩形和椭圆,可以是填充的,可以是边框的。颜色自选

    用于画图,采用GUI图形界面,可以画出直线,矩形和椭圆,采用事件处理,所画图形有鼠标控制,图形可以被填充指定的颜色,也可以是边框,图形的颜色和形状都可以有用户指定,在frame的下方,还可以显示鼠标的具体位置

    java随手画程序 手绘板

    java随手画程序 可以输入坐标画圆,画矩形,画椭圆 实现手动和智能绘图功能 实现图形的保存、读取功能。 智能绘图能够画圆形,矩形,直线等,可以输入参数自动画图。

    java鼠标绘图程序

    实验要求: 请设计一个简单的鼠标绘图程序,要求,除能自由手绘外,要求采用对话框方式输入参数来绘制基本图形(自由绘图,直线,椭圆,矩形),并能实现存贮,注意,不能使用图像存贮。

    毕业设计Java画图工具源码

    一个画图程序,能够实现自由画笔、画直线、画圆形、画实心圆形、画椭圆、画实心椭圆、画矩形、画3D矩形等功能,并且在绘图过程中能够修改该画笔的大小、颜色以及图形填充的颜色。该画图程序还需具有橡皮擦功能以及...

    制作一个图形编辑系统

    1、能用拖橡皮筋的手法绘制各类图形(直线、椭圆、矩形、文字) 2、支持画笔颜色、文字大小设置; 3、能将画面中的所有图形存储到文件中; 4、能从文件读取图形进行增补; 5、采用对话框获取图形文件名。 6、思考...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    java 绘图板程序

     (3)工具箱:橡皮、文本、随画笔、直线、矩形、圆、椭圆、圆角矩形、填充矩形、填充圆、填充椭圆、填充圆角矩形;  (4)状态栏:显示当前绘图区域中鼠标的坐标、背景颜色、线条颜色、绘图工具;  (5)绘图区...

    JAVA简单画板程序的设计实验报告.doc

    JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变, 画笔大小改变等功能。 设计思想: 1. 进行界面设计 2. 进行算法实现 3. 运行调试 4. 总结问题 设计...

    JAVA简单画板程序设计实验报告材料.doc

    JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔 大小改变等功能. 设计思想: 1. 进展界面设计 2. 进展算法实现 3. 运行调试 4. 总结问题 设计过程: A...

    Java画图程序源码.rar

    Java画图程序源码,"Pencil",//铅笔画,也就是用鼠标拖动着随意绘图  "Line", //绘制直线  "Rect", //绘制空心矩形  "fRect",//绘制以指定颜色填充的实心矩形  "Oval", //绘制空心椭圆  "fOval",//绘制以...

    JAVA 课程设计 画图工具

    (1)能用拖橡皮筋的手法绘制各类图形(直线、椭圆、矩形、文字) (2)支持画笔颜色、文字大小设置; (3)能将画面中的所有图形存储到文件中; (4)能从文件读取图形进行增补; (5)采用对话框获取图形...

    Java课程设计-JavaSwing实现GUI画板课程设计源码

    该画板中可以绘制的图形包括圆形(含椭圆)、矩形(含正方形)、直线和点,每个图形都需要保存位置、大小几何属性及是否填充、填充颜色、是否绘制边框和边框颜色等必要属性,用户通过选择按钮或者菜单项选中要绘制的...

    java大作业画图软件,模仿微软Paint、PowerPoint(含报告、只因你太美动画)

    (1)在画布上绘制直线、矩形、椭圆等图形 (2)绘制填充图形、对已有图形进行填充 (3)绘制任意曲线 (4)设置画笔的颜色和粗细 (5)橡皮擦擦除任意曲线和基本图形 (6)选取、移动、删除基本图形 (7)添加字体 ...

    Java微型绘图大师

    大学上Java选修课的大作业,实现的功能: ...◎ 允许用户绘制直线、矩形、椭圆、圆等几何图形。 ◎ 允许用户改变画笔的颜色。 ◎ 能显示绘画笔的当前颜色以及按钮的激活状态。 ◎ 可以实现用颜色填充封闭的图形。

    基于Java的一个画图板

    下面一排是工具按钮的工具栏,从左到右依次为:新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、实心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条...

    仿XP画图板.rar

    1、工具栏中功能:截图并保存,橡皮擦,取色笔,铅笔,刷子,喷枪,文本框,直线,矩形,椭圆,圆角矩形等功能 2、颜色选择功能(2处):底部颜色选择(第一个大的方形显示画笔当前的颜色)、菜单栏中“颜色”选择器...

    simplePainting:学校面向方法课程作业,使用的Java

    修改的部分有:在single类中进行了鼠标的回调通过添加BufferedImage、Graphics2D的实例,实现了图形绘制的预览实现的部分:选择前景色选择背景色清空画布为背景色铅笔工具直线工具椭圆工具正圆工具矩形工具正矩形工

Global site tag (gtag.js) - Google Analytics