鼠标点击屏幕某个地方,在这个地方画一个圆点,为什么圆点跟鼠标的位置有偏移呢?

simonqsm 2011-11-10 08:55:46
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test{
private JButton jb=new JButton("按钮");
private Point p=null;
@SuppressWarnings("serial")
public Test(){
final JFrame jf=new JFrame(){
@Override
public void paint(Graphics g){
super.paint(g);
if(p!=null){
jb.setLocation(p.x,p.y);
}
}
};
jb.setSize(64,30);
jf.setLayout(null);
jb.setVisible(false);
jf.add(jb);
jf.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(p==null)
p=new Point();
p=e.getPoint();
jb.setVisible(true);
jf.validate();
jf.repaint();
}
});
jf.setSize(800,800);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args){
new Test();
}
}
...全文
525 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
风尘中国 2011-11-14
  • 打赏
  • 举报
回复
你试试下面代码看一下是否是你想要的效果

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test{
private JButton jb=new JButton("按钮");
private Point p=null;
@SuppressWarnings("serial")
public Test(){
final JFrame jf=new JFrame(){
@Override
public void paint(Graphics g){
super.paint(g);
if(p!=null){
Graphics2D g2=(Graphics2D)g;
//下面是添加的代码
int x=(int)p.getX();
int y=(int)p.getY();
// g2.drawOval(x,y,10,10);
g2.fillOval(x,y,5,5);
jb.setLocation(p.x,p.y);
}
}
};
jb.setSize(64,30);
jf.setLayout(null);
jb.setVisible(false);
jf.add(jb);
jf.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(p==null)
p=new Point();
p=e.getPoint();
jb.setVisible(true);
jf.validate();
jf.repaint();
}
});
jf.setSize(800,800);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args){
new Test();
}
}


风尘中国 2011-11-14
  • 打赏
  • 举报
回复
怎么说是有偏移? 你是指按钮的位置还是圆的位置?

如果是园的位置,你怎么知道有偏移

[Quote=引用 6 楼 simonqsm 的回复:]

引用 4 楼 ioe_gaoyong 的回复:
你试试下面代码看一下是否是你想要的效果

Java code


import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.sw……
[/Quote]
simonqsm 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ioe_gaoyong 的回复:]
你试试下面代码看一下是否是你想要的效果

Java code


import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class ……
[/Quote]
谢谢,还是有偏移,圆的半径小得时候看得不太明显,但是当圆的半径大一些的时候,看得比较明显
simonqsm 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntor 的回复:]
没看到你的绘制代码在哪里?
没有 drawXXX/fillXXX
[/Quote]
我是用一个按钮来表示的,按钮和鼠标点击处有很大的偏移。
simonqsm 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ioe_gaoyong 的回复:]
怎么说是有偏移? 你是指按钮的位置还是圆的位置?

如果是园的位置,你怎么知道有偏移

[/Quote]

都有,圆的边缘也不和鼠标点击的地方吻合,减去半径也许可以,但按钮的左上顶点应该跟鼠标的点击位置相同吧,但也不同,偏移很大位置呢。
huntor 2011-11-14
  • 打赏
  • 举报
回复
偏移的原因 3L 已经说出来了。

得到鼠标点击的位置坐标后,减去圆的半径
tracy_1216 2011-11-13
  • 打赏
  • 举报
回复
鼠标点的位置是圆的起点坐标
huntor 2011-11-13
  • 打赏
  • 举报
回复
没看到你的绘制代码在哪里?
没有 drawXXX/fillXXX
simonqsm 2011-11-13
  • 打赏
  • 举报
回复
还是没解决这个问题呀

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧