我目前處於完全損失狀態。我沒有在Java中構建GUI方面做過很多工作,我一直在閱讀關於swing和JPanel的所有內容,我認爲我正在嘗試做的事情是可能的,我只是沒有想出如何。使用JPanel繪製直線並得到點座標
我想要建立一個GUI,在其中您可以在特定的繪圖區域內繪製直線,我希望能夠獲得開始/端點座標以便與這些點執行一些數學運算。任何幫助將不勝感激!
我目前處於完全損失狀態。我沒有在Java中構建GUI方面做過很多工作,我一直在閱讀關於swing和JPanel的所有內容,我認爲我正在嘗試做的事情是可能的,我只是沒有想出如何。使用JPanel繪製直線並得到點座標
我想要建立一個GUI,在其中您可以在特定的繪圖區域內繪製直線,我希望能夠獲得開始/端點座標以便與這些點執行一些數學運算。任何幫助將不勝感激!
這比用「(x1,y1)和(x2,y2)」方法繪製直線更難。
企業需要的是動態創建和放置其上監聽MouseEvent
的JPanel
s在畫布區域作爲JPanel
本身Line
(自定義)對象。您還需要將MODEL從VIEW中分離出來,以便您的自定義畫布JPanel
將使用替代功能正確繪製自己的問題paintComponent()
問題有點模糊,所以無法提供任何代碼。
從Performing Custom Painting和2D Graphics開始。
基本上,你需要一個鼠標監聽器來監視用戶與你的面板的交互,查看How to write mouse listeners瞭解更多信息。
根據您的需要,如果您需要維護用戶的所有點擊點,則需要將它們存儲爲類似List
的內容,或者只需要知道開始點和結束點,需要一對Point
對象。
您將能夠使用這些來繪製到您的表面並執行所需的計算。
請記住,在這種情況下,這些點與它們生成的容器是上下文相關的。這爲0x0將容器
更新
你也可以把形狀API的優勢的左上角,用Line2D
來表示兩個點。這將更容易區分不同的線條/點
您需要在JPanel上添加鼠標偵聽器。
則:
public void mouseClicked(MouseEvent me){
if(click==1){
int x1=me.getX();
int y1=me.getY();
click=click+1;
}
else{
int x2=me.getX();
int y2=me.getY();
click=1;
}
}
drawLine(x1,y1,x2,y2)
來繪製鼠標移動,你還可以添加鼠標移動監聽線路。
我會留下代碼給你,所以這裏是算法:
1.創建一個JFrame
並添加一個JPanel
它。
2.爲JPanel
添加鼠標偵聽器
3.每次按下鼠標時,獲取點擊的x和y。 (起點)
4.拖動鼠標時,連續記錄x和y。
5.當釋放鼠標時,記錄x和y。(結束點)
6.您可以使用drawLine()
方法Graphics
類或使用draw()
Graphics2D
在這種情況下,您將需要一個Line2D.Double
- 參數保持不變 - 開始x,開始y,結束x和結束y
您好,我們再次見面!我離開了他的算法 - 讓他自己編碼。這樣他就會學得更好:) – 2013-02-17 07:23:13
@LittleChild Trail通過編碼,我喜歡你的想法;) – MadProgrammer 2013-02-17 07:48:30
@MadProgrammer非常感謝。你的答案基本上都是我在找的東西! – Sam 2013-02-17 09:13:41