欢迎来到牛牛题库网 牛牛题库官网
logo

未知题型

本题的功能是监听鼠标的操作。鼠标置于窗口中单击时(左键或右键),在单击的地方会画一个小矩形,如果将鼠标置于小矩形上,则鼠标光标状态改为小十字,按下鼠标左键可拖曳,双击鼠标左键(或右键)时,小矩形消失。 import javA.awt.*; import javA.awt.event.*; import javA.util.*; import javA.awt.geom.*; import javax.swing.*; public class java3 { 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('java3'); setSize(DEFAULT WIDTH, 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=200; } class MousePanel extends JPanel { public MousePanel { squares=new ArrayList; current=null: addMouseListener(new MouseHandler); addMouseMotionListener(new MouseMotionHan- dler); } 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)); } public void 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-SlDELENGTH/2. S1DELENGTH, SIDELENGTH); squares.add(current); repaint; } public void remove(Rectangle2D s) { if(S= =null)return: if(S= =current)current=null; squares.remove(s): repaint; } private static final int SIDELENGTH=10: private ArrayList squares; private Rectangle2D current; private class MouseHandter extends MouseAction- Listener { 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!=nullevent.getClickCount >=2) remove(current); } } private class MouseMotionHandler implements Mouse- MotionListener { 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-SlDELENGTH/2. SIDELENGTH, SIDELENGTH); repaint; } } } }

A.awt.*;
B.awt.event.*;
C.util.*;
D.awt.geom.*;
E.swing.*;
F.setDefaultCloseOperation(JFramE.EXIT_
G.show;
H.add(panel);
I.paintComponent(g);
J.size;i++)
K.draw((Rectangle2D)squares.get(i));
L.size;i++)
M.get(i);
N.contains(p))return
O.getX;
P.getY:
Q.Double(
R.add(current);
S.remove(s):
T.getPoint);
U.getPoint);
V.getPoint);
W.getClickCount
X.getPoint)=
Y.getDefaultCursor);
Z.getPredefinedCursor
[.CROSSHAIR_CURSOR));
.getX:
].getY;
^.setFrame(
【参考答案】

第1处:public Rectangle2D find(Point2D p)
第2处:private class......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)

点击查看答案
微信小程序免费搜题
微信扫一扫,加关注免费搜题

微信扫一扫,加关注免费搜题