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();
}
}

解决方案 »

  1.   

    没看到你的绘制代码在哪里?
    没有 drawXXX/fillXXX 
      

  2.   

    你试试下面代码看一下是否是你想要的效果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();
        }
    }