使用affinetransform进行图像的拖动时,鼠标的位置总是处于图像的左上角。
如何改变鼠标的位置,使得鼠标可以点中图像中的任意位置而进行拖动?
如何改变鼠标的位置,使得鼠标可以点中图像中的任意位置而进行拖动?
解决方案 »
- 到底是get提交,还是post提交阿
- 有谁能答:已知一棵完全二叉树各节点的编号为0到n,如何得出其第一个非叶子节点的编号
- java io流和对象序列化
- 里氏代换原则LSP的应用
- 使用 netbeans开发程序,是用拖控件的方法好,还是自己写代码好??????????
- 求助,问题出在哪里?在线等
- 菜鸟一问:自定义类型的数组赋值问题[在线等]
- 初学者求教
- 提问?
- java中是否有system.setProperty(),在哪个包里,从那下载!!!!!!!!!!!!!
- Java 、Struts 、Asp.net三大版本代码生成器,要的快去下载吧!
- 关于JXTA中MessageImpl类和MessageElementImpl类的问题
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Point2D.Double;import javax.swing.JFrame;
import javax.swing.JPanel;public class AffineTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L; public Rectangle2D.Double rect = new Rectangle2D.Double(30,50,60,60);
public double movex = 0 ,movey = 0;
Point2D clickPoint = new Point2D.Double(0,0);
public AffineTest()
{
this.setSize(600,600);
this.setLocationRelativeTo(null);
this.add(new DrawingPanel());
this.setVisible(true);
}
private class DrawingPanel extends JPanel
{
public DrawingPanel()
{
this.addMouseListener(new panelListener());
this.addMouseMotionListener(new panelListener());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
AffineTransform tx = new AffineTransform();
if( rect.contains((Point2D.Double)clickPoint))
{
tx.translate(movex, movey);
}
Graphics2D g2d = (Graphics2D)g;
g2d.setTransform(tx);
g2d.draw(rect);
repaint();
}
}
private class panelListener implements MouseListener,MouseMotionListener
{ @Override
public void mouseClicked(MouseEvent e) {
clickPoint.setLocation(e.getX(), e.getY());
repaint();
} @Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
} @Override
public void mouseDragged(MouseEvent arg0) {
movex = arg0.getX();
movey = arg0.getY();
} @Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
public static void main(String [] args)
{
new AffineTest();
}
}