`

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 做的画板画矩形,椭圆,直线

    在Java编程语言中,我们可以利用Java AWT(Abstract Window Toolkit)和Swing库来创建一个基本的画板,实现画矩形、椭圆和直线的功能。这些组件为开发者提供了丰富的图形用户界面(GUI)功能,使得创建具有绘图能力...

    java设计一个可以根据鼠标的拖曳画直线,矩形,圆的画图程序。

    在Java编程语言中,设计一个可以根据鼠标拖曳来画直线、矩形和圆的画图程序,涉及到的主要知识点包括Java图形用户界面(GUI)的构建、事件处理以及几何形状的绘制。下面将详细阐述这些核心内容。 1. Java GUI基础:...

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

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

    基于java Swing实现的画图程序(画直线、椭圆、矩形) 【含源码+报告】

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

    java画板代码 可以画图形

    本篇文章将深入探讨如何使用Java实现画板功能,并通过代码示例来展示如何画出简单的几何图形。 首先,我们需要了解`java.awt.Graphics`类,它是Java AWT的核心绘图类。这个类提供了一系列的方法,如`drawLine()`, `...

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

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

    JAVA-画笔小程序

    2.利用这个画图程序,通过选择画直线、画圆形、画矩形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能; 3.这个画图程序,还应该做到能够改变画笔颜色的功能; 4.这个画图程序,还应该具备能够清除已...

    Java计算机图形学画直线椭圆圆形曲线分形树等

    这个主题的源代码库提供了实现多种图形功能的实例,包括直线、圆形、椭圆、区域填充、二维几何变换、曲线以及交互式界面。下面我们将深入探讨这些知识点。 1. **直线绘制**: 在计算机图形学中,直线是最基本的...

    java鼠标绘图程序

    Java鼠标绘图程序是一种基于Java GUI技术实现的交互式应用程序,允许用户通过鼠标在屏幕上绘制图形。这个实验项目旨在帮助开发者掌握Java图形用户界面(GUI)编程,事件处理以及基本图形绘制的技术。以下是对实现这...

    C#画圆、画椭圆、3点圆弧、直线、虚线集成到一个测试项目

    本项目将向你展示如何使用C#实现画圆、画椭圆、3点圆弧、直线以及虚线,并将这些功能集成到一个测试项目中。通过这个项目,你可以学习到如何利用Windows Forms或WPF的图形API来创建动态和交互式的图形。 首先,我们...

    java随手画程序 手绘板

    Java随手画程序是一款基于Java开发的简易手绘板软件,它允许用户通过输入坐标或参数进行自由创作,绘制包括但不限于圆、矩形和椭圆在内的各种图形。该程序结合了手动绘图和智能绘图两种模式,以满足不同用户的创作...

    java画板 比较简单的画板

    2. 工具选择:提供不同形状的绘制工具,如直线、矩形、椭圆等。 3. 保存和加载:保存用户的画作到文件,并能加载回画板继续编辑。 4. 撤销/重做功能:通过栈数据结构记录历史操作,实现撤销和重做功能。 Java画板是...

    java 实现 画板程序

    在本例中,我们将探讨如何利用Java实现一个简单的画板程序,该程序允许用户绘制直线、长方形、椭圆和曲线。 1. **基础架构** - 主类`painter`通过`JFrame`创建了一个窗口,设置了背景颜色为白色,并添加了一个`...

    画画_java画板_

    例如,可以使用`g.drawLine(a, b, c, d)`绘制直线,`g.fillOval(x, y, width, height)`绘制填充的椭圆。 面向对象编程(OOP)是Java的核心特性之一。在Java画板项目中,我们可以设计不同的类来表示各种图形,如`...

    Java画图画板完整代码

    本项目名为“Java画图画板完整代码”,提供了实现这一功能的源码,用户可以通过它来画出长方形、正方形、椭圆,并进行自由绘画,同时还支持填充颜色和切换颜色。下面我们将详细探讨这个项目中的关键知识点。 首先,...

    java实现画板的基本功能程序

    - **选择工具**:用户应能选择不同的绘图工具,如直线、曲线、矩形、椭圆等。这可以通过创建各种形状类,并在选中相应的工具按钮时激活相应类的方法来实现。 - **橡皮擦**:橡皮擦功能允许用户擦除画布上的部分或...

    java简单画板

    【Java简单画板】是一款基于Java编程语言开发的轻量级画图软件,它提供了基本的绘图功能,包括绘制直线、矩形和椭圆,适用于进行简单的图形创作和涂鸦。这款工具的设计理念是易用性和实用性,使得用户无需复杂的操作...

    java画图板(直线、矩形、圆、随意线条)

    本项目通过Java实现了基本的绘图功能,包括绘制直线、矩形、圆形以及自由绘制线条。下面将详细讲解这个项目的各个组成部分和涉及的技术。 1. **Java Swing库的使用**: Java Swing是Java Foundation Classes (JFC)...

    java 画图程序 可以画出任意图形哟

    例如,可以使用`g.drawLine(x1, y1, x2, y2)`来绘制直线,`g.drawOval(x, y, width, height)`来绘制圆形或椭圆,`g.fillRect(x, y, width, height)`来填充矩形等。为了实现动态画图,还可以响应鼠标或键盘事件,根据...

    Java绘图板源码 画图源代码 Swing

    主界面包含一个绘图面板,用户可以在上面绘制各种形状,如直线、圆形、椭圆、矩形、正方形和多边形。这些功能通常通过鼠标交互实现,比如点击和拖动来绘制形状,以及选择不同的绘制工具。 为了实现这些功能,开发者...

Global site tag (gtag.js) - Google Analytics