core java当中的MouseTest小程序
2008-11-06 10:02
302 查看
声明:该程序是从core java中copy过来的,用于个人学习。
测试鼠标的响应的事件
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.awt.*;
public class MouseTest {
public static void main(String[]args){
MouseFrame frame=new MouseFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class MouseFrame extends JFrame{
public MouseFrame(){
setTitle("MouseTest--phenix");
setSize(this.DEFAULT_WIDTH,this.DEFAULT_HEIGHT);
MousePanel panel=new MousePanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=300;
}
class MousePanel extends JPanel{
private static final int SIDELENGTH=20;
private ArrayList squares;
private Rectangle2D current;
public MousePanel(){
squares =new ArrayList();
current=null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public Rectangle2D find(Point2D p){
for(int i=0;i<squares.size();i++){
Rectangle2D r=(Rectangle2D)squares.get(i);
if(r.contains(p))return r;
}
return null;
}
//添加一个矩形
public void add(Point2D p){
double x=p.getX();
double y=p.getY();
current=new Rectangle2D.Double(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
squares.add(current);
repaint();
}
//移除矩形
public void remove(Rectangle2D p){
if(p==null)return;
if(p==current)current=null;
squares.remove(p);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
for(int i=0;i<squares.size();i++){
g2.draw((Rectangle2D)squares.get(i));
}
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent event){
current=find(event.getPoint());
if(current==null){
add(event.getPoint());
}
}
public void mouseClicked(MouseEvent event){
current=find(event.getPoint());
if(current!=null&&event.getClickCount()>=2){
remove(current);
}
}
}
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent event){
if(find(event.getPoint())==null){
setCursor(Cursor.getDefaultCursor());
}
else
{
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
}
public void mouseDragged(MouseEvent event){
if(current!=null){
int x=event.getX();
int y=event.getY();
current.setFrame(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
repaint();
}
}
}
}
测试鼠标的响应的事件
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.awt.*;
public class MouseTest {
public static void main(String[]args){
MouseFrame frame=new MouseFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class MouseFrame extends JFrame{
public MouseFrame(){
setTitle("MouseTest--phenix");
setSize(this.DEFAULT_WIDTH,this.DEFAULT_HEIGHT);
MousePanel panel=new MousePanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=300;
}
class MousePanel extends JPanel{
private static final int SIDELENGTH=20;
private ArrayList squares;
private Rectangle2D current;
public MousePanel(){
squares =new ArrayList();
current=null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public Rectangle2D find(Point2D p){
for(int i=0;i<squares.size();i++){
Rectangle2D r=(Rectangle2D)squares.get(i);
if(r.contains(p))return r;
}
return null;
}
//添加一个矩形
public void add(Point2D p){
double x=p.getX();
double y=p.getY();
current=new Rectangle2D.Double(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
squares.add(current);
repaint();
}
//移除矩形
public void remove(Rectangle2D p){
if(p==null)return;
if(p==current)current=null;
squares.remove(p);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
for(int i=0;i<squares.size();i++){
g2.draw((Rectangle2D)squares.get(i));
}
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent event){
current=find(event.getPoint());
if(current==null){
add(event.getPoint());
}
}
public void mouseClicked(MouseEvent event){
current=find(event.getPoint());
if(current!=null&&event.getClickCount()>=2){
remove(current);
}
}
}
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent event){
if(find(event.getPoint())==null){
setCursor(Cursor.getDefaultCursor());
}
else
{
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
}
public void mouseDragged(MouseEvent event){
if(current!=null){
int x=event.getX();
int y=event.getY();
current.setFrame(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
repaint();
}
}
}
}
相关文章推荐
- tomcat启动maven依赖项目报错:java.lang.ClassNotFoundException: com.test.core.listener.ContextParameterLi
- Core Java第三章知识点总结——程序的流程控制
- Java当中计算关于程序运行时间的函数
- 【程序29】 TestAdd3.java 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组, //再将a[i][i]累加后输出。
- 【程序24】TestNumber.java 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- Java关于程序跳转语句TestContinueBreakReturn.java
- 首页 > 程序开发 > 软件开发 > Java > 正文 Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解
- java程序运行时出现问题:Could not find the main class: test_jena. Program will exit.
- java程序编写:1.定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课,按存储顺序依次为: core C++,coreJava,Servlet,JSP和EJB。
- 【程序8】 TestAdd.java 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
- 【程序1】 TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, //假如兔子都不死,问每个月的兔子总数为多少?
- java当中的IO(一)mars笔记【图解】---------(在编译io程序时,会有编译异常,所以我们就要try...cath处理异常)
- CoreJava——第一个Java程序
- 《Core Java Volume I》学习笔记之命令行方式开发java程序
- 别人的Morgan Stanley面试,注重基础,java core、多线程、设计模式、设计程序。。。
- 【Java编程试题】程序1 TestRabbit.java
- Java — 程序设计基础(Core Java I)
- Junit+Spring-test进行单元测试,报java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedE
- 使用jutil测试程序出现错误java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=classestest]
- 【程序48】 TestCode.java 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下 //:每位数字 都加上5,然后用和除以10的余数代替该数字,再将