發新話題

[JAVA] 拖曳畫三角形

[JAVA] 拖曳畫三角形

引用:
/*****************************************
說明: 請在視窗上畫一三角形,其後拖曳任一
頂點時,則可畫出另一三角形
*************************************************/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//想想還有沒有其他的東西要import
import javax.swing.event.*; //要多import這個
public class f7 extends JFrame implements MouseInputListener//名稱改一改
{
    Container c;
    //設定UI元件
    //設定共用的變數與類別
    int x1,y1,x2,y2,x3,y3;
    int mvpt;//紀錄被拖曳的點
    public f7()   //建構元,名稱改一改
    {
        super("拖曳畫三角形");
        c=getContentPane();//取得ContentPane
        //設定版面設定
         c.setLayout(new FlowLayout(FlowLayout.CENTER));//設定為用flowlayout
        //初始化UI元件
        x1=100;//先設定一個基本的三角型
        y1=50;
        x2=10;
        y2=200;
        x3=190;
        y3=200;
        mvpt=0;
        //設定UI元件與滑鼠的事件觸發傾聽者
        addMouseListener(this);
        addMouseMotionListener(this);
        setSize(640,480);//設定size,顯示出去
        show();
    }
    public void paint(Graphics g)  
    {
            super.paint(g);//畫出元件
            //額外的畫圖程式寫在這裡,畫三角型
        g.drawLine(x1,y1,x2,y2);
        g.drawLine(x2,y2,x3,y3);
        g.drawLine(x1,y1,x3,y3);
    }
    //UI元件事件處理類別寫在這裡
     //滑鼠事件處理類別寫在這裡
    /*****實作滑鼠移動事件處理物件 *******/
     /*****實作滑鼠移動事件處理方法 *******/
     public void mouseClicked(MouseEvent e){};
     public void mouseEntered(MouseEvent e){};
     public void mouseExited(MouseEvent e){};
     public void mousePressed(MouseEvent e)
     {
         int dist1,dist2,dist3,nowx,nowy;
         nowx=e.getX();
         nowy=e.getY();
         dist1=(x1-nowx)*(x1-nowx)+(y1-nowy)*(y1-nowy);
         dist2=(x2-nowx)*(x2-nowx)+(y2-nowy)*(y2-nowy);
         dist3=(x3-nowx)*(x3-nowx)+(y3-nowy)*(y3-nowy);
         if (dist1<=25)//滑鼠和第一頂點距離很近
             mvpt=1;
         else if (dist2<=25)//滑鼠和第二頂點距離很近
             mvpt=2;
         else if (dist3<=25)//滑鼠和第三頂點距離很近
             mvpt=3;
         repaint();
     }
     public void mouseReleased(MouseEvent e)
     {
         mvpt=0;
     };
     public void mouseMoved(MouseEvent e){};
     public void mouseDragged(MouseEvent e)
     {
         if (mvpt==1)//拖曳點是第一點
         {
             x1=e.getX();
             y1=e.getY();
         }
         else if (mvpt==2)//拖曳點是第二點
         {
             x2=e.getX();
             y2=e.getY();
         }
         else if (mvpt==3)//拖曳點是第三點
         {
             x3=e.getX();
             y3=e.getY();
         }
         repaint();
     }

  /***主程式***/
    public static void main(String args[]) //程式起點
    {
        f7 app=new f7(); //名稱改一改,啟動UI元件
        app.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        }); //處理視窗關閉要求
    }
}

TOP

它的bug好像是會拉出是窗外
然後拉不回來
應該要限制滑鼠只能拖到特定範圍ㄅ

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。