网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

本题的功能是监听鼠标的操作。鼠标置于窗口中单击时(左键或右键),在单击的地方会画一个小矩形,如果将鼠标置于小矩形上,则鼠标光标状态改为小十字,按下鼠标左键可拖曳,双击鼠标左键(或右键)时,小矩形消失。 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; } } } }


参考答案

更多 “ 本题的功能是监听鼠标的操作。鼠标置于窗口中单击时(左键或右键),在单击的地方会画一个小矩形,如果将鼠标置于小矩形上,则鼠标光标状态改为小十字,按下鼠标左键可拖曳,双击鼠标左键(或右键)时,小矩形消失。 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;isquares.size;i++) g2.draw((Rectangle2D)squares.get(i)); } public void find(Point2D p) { for(int i=0;isquares.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.在绘图区域单击鼠标的左键B.在绘图区域双击鼠标的小轮C.在绘图区域单击鼠标的小轮D.在绘图区域单击鼠标的右键E.用ZOOM命令的E选项

考题 在Windows的“资源管理器”或“我的电脑”窗口中,要选择多个不相邻的文件以便对之进行某些处理操作(如复制、移动),选择文件的方法是()。 A、用鼠标左键依次单击各个文件B、按住Ctrl键,并用鼠标左键依次单击各个文件C、按住Shift键,并用鼠标左键依次单击各个文件D、用鼠标左键单击第一个文件,然后用鼠标右键单击各个文件

考题 在瑞星防火墙的窗口中,如发现可疑的进程可()选择“结束此进程”。 A.单击鼠标左键B.单击鼠标右键C.双击鼠标左键D.双击鼠标右键

考题 在Windows中,排列桌面项目图标的第一步操作是()。 A、鼠标左键单击桌面空白区B、鼠标右键单击桌面空白区C、鼠标右键单击任务栏空白区D、鼠标左键单击任务栏空白区

考题 Windows操作系统中,启动程序或窗口,只要()对象的图表即可。 A.用鼠标左键双击 B.用鼠标右键双击 C.用鼠标左键单击 D.用鼠标右键单击

考题 在Window中,排列桌面项目图标的第一步操作是(  )。 A.在任务栏空白区中单击鼠标右键 B.在桌面空白区中单击鼠标右键 C.在桌面空白区中单击鼠标左键 D.在任务栏空白区中单击鼠标左键

考题 【单选题】画总线时第一次单击鼠标()放置总线起点,拐点时再次单击鼠标(),停止时双击鼠标()。A.左键 左键 右键B.右键 右键 右键C.左键 左键 左键D.右键 右键 左键

考题 2、在裁剪框里进行下面哪一项操作可以提交当前裁剪操作?A.双击鼠标右键B.单击鼠标右键C.双击鼠标左键D.单击鼠标左键

考题 在word中,将鼠标指针移到文本左侧的编辑区外,选定行的操作是()。A.单击鼠标左键B.单击鼠标右键C.双击鼠标左键D.双击鼠标右键

考题 在Windows的"资源管理器"窗口中,如果想一次选定多个分散的文件或文件夹,正确的操作是().A.按住Ctrl键,用鼠标右键单击,逐个选取B.按住Ctrl键,用鼠标左键单击,逐个选取C.按住Shift键,用鼠标右键单击,逐个选取D.按住Shift键,用鼠标左键单击,逐个选取