進口?Java . awt . *;
進口?Java . awt . event . mouse event;
進口?Java . awt . event . mouse listener;
進口?Java . awt . event . mousemotionlistener;
公共?班級?CirclePanel?延伸?JPanel?{
私人?int?x;
私人?int?y;
私人?int?半徑;
私人?int?mouseDiffX?=?0;
私人?int?小老鼠?=?0;
私人?布爾?激活?=?假的;
公共?CirclePanel(最終?int?x,?決賽?int?y,?決賽?int?半徑){
super();
這個. x?=?x;
這個. y?=?y;
這個半徑?=?半徑;
addMouseListener(新?MouseListener()?{
@覆蓋
公共?作廢?mouseClicked(最終?MouseEvent?mouseEvent)?{}
@覆蓋
公共?作廢?鼠標按下(最終?MouseEvent?mouseEvent)?{
mouseDiffX?=?mouseEvent.getX()?-?circle panel . this . x;
小老鼠?=?mouseEvent.getY()?-?circle panel . this . y;
激活?=?mouseEvent.getPoint()。距離(
新的?點(CirclePanel.this.x,?CirclePanel.this.y))?& lt?半徑;
}
@覆蓋
公共?作廢?mouseReleased(最終?MouseEvent?mouseEvent)?{已激活?=?假的;}
@覆蓋
公共?作廢?鼠標輸入(最終?MouseEvent?mouseEvent)?{}
@覆蓋
公共?作廢?mouseExited(final?MouseEvent?mouseEvent)?{}
});
addMouseMotionListener(新?MouseMotionListener()?{
@覆蓋
公共?作廢?mouse draged(final?MouseEvent?mouseEvent)?{
如果(激活){
CirclePanel.this.x?=?mouseEvent.getX()?-?mouseDiffX
CirclePanel.this.y?=?mouseEvent.getY()?-?mouseDiffY
paint component(circle panel . this . get graphics());
}
}
@覆蓋
公共?作廢?mouseMoved(最終?MouseEvent?mouseEvent)?{}
});
}
@覆蓋
受保護?作廢?paintComponent(最終?圖形?圖文)?{
super.paintComponent(圖形);
graphics.drawOval(x,y,?半徑,?半徑);
}
公共?靜電?作廢?main(String[]?args)?{
決賽?JFrame?f?=?新的?JFrame(" Test ");
f.setSize(500,?500);
f . set visible(true);
f.getContentPane()。添加(新?CirclePanel(40,?40,?50));
f . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
}
}