JPanel及其他控件中鼠标拖动画选择框
2009-08-25 11:19
381 查看
响应鼠标按下事件,记录起始点到全局变量
响应鼠标拖动事件,启用XOR模式,绘制前一个矩形(抹除前一个矩形),新建一个矩形并绘制(当前矩形);新建矩形的算法有多种,以下采用的算法适应各个方向上的拖动;注意使用XOR模式来抹除之前绘制的矩形,千万不要使用repaint方法。
响应鼠标释放时间,启用XOP模式抹除最后一次矩形
响应鼠标拖动事件,启用XOR模式,绘制前一个矩形(抹除前一个矩形),新建一个矩形并绘制(当前矩形);新建矩形的算法有多种,以下采用的算法适应各个方向上的拖动;注意使用XOR模式来抹除之前绘制的矩形,千万不要使用repaint方法。
响应鼠标释放时间,启用XOP模式抹除最后一次矩形
//起始点,鼠标按下时记录 Point pBegin; //绘图矩形 Rectangle rect; private JPanel getJPanelWaveBox() { if (jPanelWaveBox == null) { jPanelWaveBox = new JPanel(); jPanelWaveBox.setBounds(197, 12, 543, 344); jPanelWaveBox.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent evt) { Graphics2D g2 = (Graphics2D) jPanelWaveBox.getGraphics(); //启用XOR模式 g2.setXORMode(Color.white); //绘制之前的矩形 if (rect != null) { g2.draw(rect); } //绘制现在的矩形 rect = new Rectangle((int) Math.min(pBegin.getX(), evt.getPoint().getX()), (int) Math.min(pBegin.getY(), evt.getPoint().getY()), (int) Math.abs(pBegin.getX() - evt.getPoint().getX()),(int) Math.abs(pBegin.getY() - evt.getPoint().getY())); g2.draw(rect); g2.setPaintMode(); g2.dispose(); } }); jPanelWaveBox.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent evt) { try { // 画选择框(实际效果为去掉) Graphics2D g2 = (Graphics2D) jPanelWaveBox.getGraphics(); g2.setXORMode(Color.white); g2.draw(rect); g2.setPaintMode(); g2.dispose(); } catch (Exception e) {} pBegin = null; rect = null; } public void mousePressed(MouseEvent evt) { pBegin = evt.getPoint(); jPanelWaveBox.requestFocus(); } }); } return jPanelWaveBox; }
相关文章推荐
- jQuery+jRange数值范围选择控件_鼠标拖动数值范围
- 处理拖动的时候,窗口出现重影和其他窗口残余控件的方法
- JavaScript简单实现鼠标拖动选择功能
- JavaFX2: 鼠标拖动选择和Ctrl+Shift连续区间选择的ListView
- 使用ASP.NET AJAX Control Toolkit中的ReorderList控件实现用鼠标拖动改变条目顺序
- VB 鼠标右键选择list控件的内容
- Winform鼠标拖动改变控件大小、移动控件位置
- C#鼠标拖动控件改变位置并绘制虚框
- Telerik 控件事例(鼠标拖动行,拖动列,设置行对齐,行宽,是否显示)
- 鼠标拖动控件
- C#鼠标任意拖动PictureBox等控件(使用API ReleaseCapture SendMessage)
- 通过鼠标任意拖动.NET Winform窗体中的控件
- 鼠标拖动(移动、拖曳)控件
- silverlight 中鼠标任意拖动控件的实例分享
- (转)C#如何在运行时通过鼠标拖动改变控件的大小
- Android笔记--仿拖动选择日期时间控件的单个item
- JavaScript模仿鼠标拖动选择功能
- OpenLayers中开启SelectFeature控件后鼠标在面要素上不能拖动地图的问题
- C#鼠标拖动控件改变位置并绘制虚框
- 通过鼠标任意拖动.NET Winform窗体中的控件