我需要創建一個按鈕,它執行一些計算並給我一個列表,並且需要在我的paint中使用該列表並創建這些座標的行。對於我來說,將事件監聽器的數據發送到我的paint方法的最佳方式是什麼?謝謝!如何將數據從事件監聽器發送到paintComponent
0
A
回答
0
你不給我們足夠的信息,你問了很多東西,所以這裏是一個粗略的大綱,讓你開始使用awt/swing按鈕,你可以從那裏查找其餘的東西,或者詢問更具體的問題,比如如何設置自定義繪畫等。請參閱以下代碼中的註釋和解釋。
創建一個公開可用的數組或列表來存儲您的座標。這就是我們將使用共享的事件偵聽器和您的paint方法之間的信息:
public static LinkedList<Point> myCoOrdinateList = new LinkedList<>();
添加動作監聽你的按鈕是這樣的:
myButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
//do something to get your new co-ords/point
//
//your code here to get X and Y
//assign X and Y to a point:
Point myNewPoint = new Point(X, Y);
//add that point to the list
myCoOrdinateList.add(myNewPoint);
//repaint your graph or your custom paint component here (or whatever else you are drawing these lines to):
myComponent.repaint();
}
});
如果你正在做的畫通過重寫組件的paint方法,那麼你可以添加你的paint方法是這樣的:
//create graphics so we can draw lines
Graphics2D g2d = (Graphics2D) g;
//we need to work with 2 points so we will store one point here:
Point previous = new Point(0, 0);
for (Iterator<Point> iterator = myCoOrdinateList.iterator(); iterator.hasNext();)
{
//get point
Point nextPoint = iterator.next();
//link previous point and next pint in the co-ordinates list:
g2d.drawLine(previous.x, previous.y, nextPoint.x, nextPoint.y);
//set new previous point so the next line is ready to be drawn
previous = nextPoint;
}
下面是來自官方的Java教程一些更多的信息。我建議你在問任何問題之前先閱讀這些鏈接。
自畫: https://docs.oracle.com/javase/tutorial/uiswing/painting/index.html
與圖形/繪圖工作的事情: https://docs.oracle.com/javase/tutorial/2d/index.html
與擺動按鈕方面的更多信息: https://docs.oracle.com/javase/tutorial/uiswing/components/button.html
相關問題
- 1. 用事件監聽器發送數據
- 2. 如何通過Matlab事件和監聽器發送數據?
- 3. 觸發事件監聽器
- 4. 通過監聽器從活動發送數據到片段
- 5. JQuery到事件監聽器
- 6. 如何將事件監聽器添加到我的javascript函數
- 7. Node.js監聽併發送事件
- 8. 事件監聽器?
- 9. Laravel監聽器監聽多個事件
- 10. Ember.js如何監聽從服務器發起的事件?
- 11. 如何從Java線程觸發事件監聽器
- 12. 將異常初始化事件發送到類的監聽器實例org.sonar.server.platform.PlatformServletContextListener
- 13. 如何在發生事件監聽器後聲明函數
- 14. 如何將事件監聽器添加到OverlayView?
- 15. 如何在luman laravel中將事件調用到監聽器中?
- 16. 如何將一個mouseenter事件監聽器附加到sap.m.StandardListItem?
- 17. 鍵監聽器事件沒有觸發?
- 18. ListSelection監聽器沒有觸發事件
- 19. 如何調試事件監聽器
- 20. as3:如何禁用事件監聽器
- 21. 參數列表發送到sipml5中的事件監聽器功能
- 22. Javascript:將事件監聽器附加到Push()事件的陣列
- 23. 如何從事件監聽器訪問函數。 JavaScript的
- 24. 例外發送上下文初始化事件監聽器
- 25. 從事件監聽器鎖定Python
- 26. 返回布爾從事件監聽器
- 27. Android - 事件監聽器
- 28. 刪除事件監聽器
- 29. 添加事件監聽器
- 30. 回調事件監聽器
可以請你提供更多的信息?你試過什麼了? 問題越好,答案越好。 – Gewure