進口?Java . awt . event . mouse listener;
進口?javax . swing . *;
進口?Java . awt . *;
進口?Java . util . linked list;
公共?班級?DrawPoint?延伸?JFrame?器物?鼠標監聽器{
私人?LinkedList & lt點& gt?列表;//創建壹個新的Point類型的鏈表來存儲“節點”
私人?決賽?int?寬度=318,高度= 340;
私人?維度?scrnsize
私人?工具包?工具包?=?toolkit . getdefaulttoolkit();
公共?DrawPoint()?{
//?托多?自動生成?建造師?煙蒂
list=new?LinkedList & lt點& gt();//鏈表初始化
//窗口設置部分,不再贅述。
this.setSize(寬度,高度);
this . setresizable(false);
this . setdefaultcloseoperation(EXIT _ ON _ CLOSE);
scrnsize?=?toolkit . getscreensize();
setLocation(scrnsize.width?/?2?-?getWidth()?/?2,
scrnsize.height?/?2?-?getHeight()?/?2);
this . addmouse listener(this);//添加窗口鼠標監視器
this . set visible(true);
}
@覆蓋
公共?作廢?mouseClicked(MouseEvent?e)?{
//?托多?自動生成?方法?煙蒂
}
@覆蓋
公共?作廢?mouse enter(mouse event?e)?{
//?托多?自動生成?方法?煙蒂
}
@覆蓋
公共?作廢?mouseExited(MouseEvent?e)?{
//?托多?自動生成?方法?煙蒂
}
@覆蓋
公共?作廢?mousePressed(MouseEvent?e)?{
//?托多?自動生成?方法?煙蒂
}
@覆蓋
公共?作廢?mouseReleased(MouseEvent?e)?{
//添加鼠標按鈕釋放的事件處理。
//?托多?自動生成?方法?煙蒂
int?x = e . getx();//獲取鼠標的x坐標。
int?y = e . gety();//獲取鼠標的y坐標。
字符串?str = joptionpane . showinputdialog(null,?“請輸入更改標記文本”);
//顯示對話框,根據用戶輸入獲取標記文本。
if(str!=null){//如果標簽文本不為空,則將該點視為有效點並添加到鏈表中。
list.add(新?Point(x,y,str));
}
repaint();//使用此函數調用paint()方法進行重構。
this . validate();
}
公共?作廢?油漆(圖形?g){
If(list.isEmpty())//如果鏈表為空,不做任何操作直接返回。
返回;
對於(點?P:list){//遍歷數組,獲取所有節點。
g.drawOval(p.getX(),?p.getY(),?2,?2);//先畫壹些
g.drawString(p.getS(),?p.getX()+5,?p . gety()+6);//重新標記節點的描述性文本
}
}
公共?靜電?作廢?main(字符串?args[]){
DrawPoint?p =新?draw point();
}
}
班級?點?{//節點類,包含三個屬性:X坐標,Y坐標,描述性文字。
私人?int?x,y;//x坐標和y坐標
私人?字符串?s;//描述性文本
公共?點(){
x = 0;
y = 0;
s =
}
公共?點(int?x,int?y弦?s){
this.x = x
this.y = y
this.s = s
}
公共?int?getX(){
回歸?x;
}
公共?int?getY(){
回歸?y;
}
公共?字符串?獲取(){
回歸?s;
}
}