我將如何使用標準Java 2D編寫自己的滾動條。滾動條的原始Java 2D實現
我真的不希望使用擺動,和我已經彌補了一切我自己的組成部分,如按鈕等
我真的不想找的代碼,而數學參與在事件發生變化和繪圖時。
我將如何使用標準Java 2D編寫自己的滾動條。滾動條的原始Java 2D實現
我真的不希望使用擺動,和我已經彌補了一切我自己的組成部分,如按鈕等
我真的不想找的代碼,而數學參與在事件發生變化和繪圖時。
爲什麼要編寫自己的java GUI工具包?你已經有了Swing和SWT的選擇,你真的可以比這兩支球隊做得更好嗎?
如果您已經編寫了該工具包的其餘部分,我不明白爲什麼滾動條會讓您失望。如果不瞭解您的事件系統,或者您的自定義組件結構如何,就不可能提供多少建議。我不認爲這是數學密集型的 - 只是保持可滾動組件的高度和視圖的大小,並且滾動條的大小應該與可見組件的比例相匹配。滾動條的位置應該匹配組件的哪一部分是可見的(這將不得不縮放)。具體來說,你想知道什麼?
Java現已開放。我會去看看Swing和/或SWT的源代碼,因爲它們已經被實現。數學看起來相當簡單。你有一個酒吧和一個容器。爲了簡化,我們只討論長度(滾動條移動的維度)。容器有一定的長度。酒吧的長度等於或小於容器的長度。定義滾動條的中心和兩個端點是很有用的。您可以使滾動條從頂部0開始,底部1開始,頂部0開始,底部100開始,重要部分以相同的方式定義您的滾動條。然後,您可以檢查端點是否與邊緣發生碰撞,以阻止條移動。如果用鼠標將光標放在條內的座標上,則條開始關注光標的位置,並將繪製滾動條和滾動條最終應該影響的內容。所以,你會讓頁面受到影響,並將其映射到0和1 *滾動條像素的縮放比例。然後你會擔心任何一端的箭頭以及每次點擊跳躍有多大,並處理mousedown事件等等。使用所給予的東西不要重新發明輪子。
雖然不是Java2D的,這個簡單的代碼片段可能會有所幫助:
Swing是臃腫和使用矢量內部。在優化代碼方面肯定不是最好的。 意見:SWT的編程模型比Swing更差。兩者都有很多不足之處。 – MetroidFan2002 2008-10-16 14:24:12