将图片添加到JLabel上,然后拖动JLabel在面板上移动,能捕获它移动后的坐标(即jLabel移动后新的坐标),怎样才能将新获得的这个坐标记录下来,将来以便在其他地方调用。希望赐教,不胜感激。
下面是代码,已经实现移动和得到新的坐标。/**
* @(#)ImageMove.java
*
*
* @author
* @version 1.00 2009/10/14
*/import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class ImageMove {
static Point p; //Jlabel随鼠标移动后的坐标
static int x,y;
public static void main(String[] args) throws Exception{
//int x,y;
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(null);
f.setBounds(0,0,400,400);
Icon icon = new ImageIcon(new URL("http://img.baidu.com/img/logo-zhidao.gif"));
JLabel l = new JLabel(icon);
l.setSize(icon.getIconWidth(),icon.getIconHeight());
l.setBorder(BorderFactory.createLineBorder(Color.red));
f.getContentPane().add(l);
f.setVisible(true);
l.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
}
});
l.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
JLabel l = (JLabel)e.getSource();
p = new Point(l.getLocation()) ;//这里获取到Jlabel新的坐标点
System.out.println (p);
}
});
l.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
JLabel l = (JLabel)e.getSource();
l.setLocation(l.getX()+ e.getX()-x,l.getY()+ e.getY()-y);
}
public void mouseMoved(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
}
//System.out.println (p);
//想要在这里能获得移动Jlabel后鼠标释放后的坐标,以便将来在其他程序里能调用这个坐标值
//但是这里的p值输出不出来
}
下面是代码,已经实现移动和得到新的坐标。/**
* @(#)ImageMove.java
*
*
* @author
* @version 1.00 2009/10/14
*/import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class ImageMove {
static Point p; //Jlabel随鼠标移动后的坐标
static int x,y;
public static void main(String[] args) throws Exception{
//int x,y;
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(null);
f.setBounds(0,0,400,400);
Icon icon = new ImageIcon(new URL("http://img.baidu.com/img/logo-zhidao.gif"));
JLabel l = new JLabel(icon);
l.setSize(icon.getIconWidth(),icon.getIconHeight());
l.setBorder(BorderFactory.createLineBorder(Color.red));
f.getContentPane().add(l);
f.setVisible(true);
l.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
}
});
l.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
JLabel l = (JLabel)e.getSource();
p = new Point(l.getLocation()) ;//这里获取到Jlabel新的坐标点
System.out.println (p);
}
});
l.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
JLabel l = (JLabel)e.getSource();
l.setLocation(l.getX()+ e.getX()-x,l.getY()+ e.getY()-y);
}
public void mouseMoved(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
}
//System.out.println (p);
//想要在这里能获得移动Jlabel后鼠标释放后的坐标,以便将来在其他程序里能调用这个坐标值
//但是这里的p值输出不出来
}
里面有 public void mouseDragged(MouseEvent e) {
//e.getX(),e.getY()就能拿到拖动到的位置了
}
l.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e){
JLabel l = (JLabel) e.getSource();
p = new Point(l.getLocation());// 这里获取到Jlabel新的坐标点
x = p.x;//得到移动后的x坐标
y = p.y;//得到移动后的y坐标
System.out.println(p);
}
});
要放到main方法里System.out.println("x is :"+ImageMove.x + " y is :"+ImageMove.y);
你的mouse都没有动一开始.
实现implements MouseListener public void mouseClicked(MouseEvent e) {
//打印x、y坐标
System.out.println(e.getX());
System.out.println(e.getY());
}
有一个add(int x ,int y){}方法;
在这个main函数里调用add方法,里面传的参数是新获得的坐标点的值
int yPoint;//移动图片是鼠标在JLabel上的坐标;
private void move(String tObject,int x,int y){
int w = tObject.indexOf("[");
String componentClass = tObject.substring(0,w);
String tPath = "d:\\" + componentClass + ".png";
File tfile = new File(tPath);
try{
Image tImage = ImageIO.read(tfile);
Icon icon = new ImageIcon(tImage);
JLabel I = new JLabel(icon);
I.setSize(icon.getIconWidth(),icon.getIconHeight());
I.setBounds(x,y,icon.getIconWidth(),icon.getIconHeight());
jPanel1.add(I);
I.setVisible(true); I.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e){
xPoint = e.getX();
yPoint = e.getY();
}
}); I.addMouseListener(new MouseAdapter(){
@Override
public void mouseReleased(MouseEvent e){
JLabel I = (JLabel)e.getSource();
I.getLocation();
}
});
I.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
JLabel I = (JLabel)e.getSource();
I.setLocation(I.getX()+e.getX()-xPoint,I.getY()+e.getY()-yPoint);
} public void mouseMoved(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
}catch(Exception e){
}
//add(新的坐标点);怎样将鼠标释放后新获得的坐标点传到里面去
}
* @(#)ImageMove.java
*
*
* @author
* @version 1.00 2009/10/14
*/import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class ImageMove {
static Point p; //Jlabel随鼠标移动后的坐标
static int x,y;
public static void main(String[] args) throws Exception{
//int x,y;
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(null);
f.setBounds(0,0,400,400);
Icon icon = new ImageIcon(new URL("http://img.baidu.com/img/logo-zhidao.gif"));
JLabel l = new JLabel(icon);
l.setSize(icon.getIconWidth(),icon.getIconHeight());
l.setBorder(BorderFactory.createLineBorder(Color.red));
f.getContentPane().add(l);
f.setVisible(true);
l.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
}
});
l.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
JLabel l = (JLabel)e.getSource();
p = new Point(l.getLocation()) ;//这里获取到Jlabel新的坐标点
new ImageMove().add(p.x, p.y); //这里不是把参数传出去了吗?
}
});
l.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
JLabel l = (JLabel)e.getSource();
l.setLocation(l.getX()+ e.getX()-x,l.getY()+ e.getY()-y);
}
public void mouseMoved(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
});
}
//你的add function
public void add(int x,int y) {
System.out.println("(" + x + "," + y + ")");
}
//System.out.println (p);
//想要在这里能获得移动Jlabel后鼠标释放后的坐标,以便将来在其他程序里能调用这个坐标值
//但是这里的p值输出不出来
}
int yPoint;//移动图片是鼠标在JLabel上的坐标;
private void move(String tObjName,int x,int y){
removeHashMapByKey(tObjName);
System.out.println(LeftTopHashMap.size());
int w = tObjName.indexOf("[");
String componentClass = tObjName.substring(0,w);
String tPath = "d:\\" + componentClass + ".png";
File tfile = new File(tPath);
try{
Image tImage = ImageIO.read(tfile);
Icon icon = new ImageIcon(tImage);
JLabel I = new JLabel(icon);
I.setSize(icon.getIconWidth(),icon.getIconHeight());
I.setBounds(x,y,icon.getIconWidth(),icon.getIconHeight());
jPanel1.add(I);
I.setVisible(true); I.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e){
xPoint = e.getX();
yPoint = e.getY();
}
}); I.addMouseListener(new MouseAdapter(){
@Override
public void mouseReleased(MouseEvent e){
JLabel I = (JLabel)e.getSource();
int x = (int)I.getLocation().getX();// 相当于m
int y = (int)I.getLocation().getY();// 相当于n 看最后面的draw函数就明白了
jPanel1.remove(I);
}
});
I.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
JLabel I = (JLabel)e.getSource();
I.setLocation(I.getX()+e.getX()-xPoint,I.getY()+e.getY()-yPoint);
} public void mouseMoved(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
}catch(Exception e){
}
drawpIC(tObject,m,n);// 这里想要传入心获得的坐标m , n
}