使用組件的paint函數用於繪圖, 使用MouseListener來響應鼠標的點擊
效果圖
代碼
import?java.awt.Color;import?java.awt.Graphics;
import?java.awt.event.*;
import?javax.swing.*;
public?class?DemoWin?extends?JFrame?{
public?DemoWin()?{
MyPanel?mp?=?new?MyPanel();
mp.addMouseListener(mp);
add(mp);
//?窗口屬性設置
setTitle("Demo");//?標題
setSize(300,?280);//?窗口大小
setLocationRelativeTo(null);//?窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//?窗口點擊關閉時,退出程序
}
public?static?void?main(String[]?args)?{
DemoWin?win?=?new?DemoWin();?//?創建窗口
win.setVisible(true);//?顯示窗口
}
class?MyPanel?extends?JPanel?implements?MouseListener?{
int?times;//?記錄點擊的次數
int?x;//?記錄鼠標X軸的位置
int?y;//?記錄鼠標Y軸的位置
@Override
public?void?paint(Graphics?g)?{
super.paint(g);
if?(times?==?0)?{
g.setColor(Color.BLUE);//?顏色
g.fillOval(150,?150,?50,?50);//?150,150代表位置?50,50代表寬高
}?else?if?(times?==?1)?{
g.setColor(Color.RED);
g.fillRect(150,?150,?50,?50);
}?else?{
g.setColor(Color.RED);
g.fillRect(x,?y,?50,?50);
}
repaint();
}
public?void?mouseClicked(MouseEvent?e)?{
//?if?(e.getButton()==MouseEvent.BUTTON1)?{//單擊左鍵時有效..
//?times++;//?記錄點擊的次數
//?x?=?e.getX();
//?y?=?e.getY();
//?}
}
public?void?mousePressed(MouseEvent?e)?{//?鼠標按下就有效
times++;//?記錄點擊的次數
x?=?e.getX();
y?=?e.getY();
}
public?void?mouseReleased(MouseEvent?e)?{//?鼠標釋放
}
public?void?mouseEntered(MouseEvent?e)?{//?鼠標移入
}
public?void?mouseExited(MouseEvent?e)?{//?鼠標移出
}
}
}