我想在java中製作棋盤遊戲,並且遇到以下問題。如何?在Java中繪製自定義組合對象
我想創建一個可以在jpanel中繪製的對象。讓我們命名這個對象板。這個板子我希望它成爲其他板子的複合物。因此,當我調用(讓我們稱之爲)paint()方法的電路板時,爲了正確繪製它將不得不自己調用paint並調用其子板的paint()方法等。 我知道這就像一個已經實現的行爲(有人可以說......只是在一個Jpanel中創建一個Jpanel),但不同的是,對於董事會對象,我希望能夠將它拖放到Jpanel中的任何位置。此外,Jpanel可能包含許多可以拖放到任何位置的板(也可以重疊)。所以這種行爲限制了我使用Java swing組件,因爲它們都使用不是我想要的佈局。
最後,當我一板對象添加到板我使用COORDS要相對於母基板,而不是JPanel的。 (即當我添加板B到板A,並且我想將板B添加到(x,y)=(10,10),這些座標是相對於A的位置)
這是任何方式來做到這一點?我不是在尋找完整的例子,只是爲了一般的想法(最好乾淨!)
PS。我已經實現了幾乎可以工作的東西。在我的實現中,問題在於Graphics Board用來繪製的圖片來自JPanel,並且x,y座標與所有Board的JPanel相對(而不是在添加Board的情況下的主板)到一個母板,而不是直接到JPanel)。
我不知道這是否是可熔的,但我正在成像,葉板是用自己的初始座標(0,0)自己繪畫,它在JPanel中以某種方式被轉換爲(x,y),具體取決於在董事會的Jpanel中的實際位置。
謝謝!
好的建議+1 – mKorbel
@mKorbel:我在幾天前才知道。之前我不知道任何合適的解決方案,而不使用null佈局。 – Heisenbug
感謝您提供的答案。我想知道,使用已經制作好的擺動部件並改變他們的行爲方式以符合我的標準並不是一個壞習慣嗎?當我在另一個棋盤遊戲中使用JButton作爲棋子時,我的體驗不好(這就是爲什麼我決定去寫我自己的組件)。 BTW是否在鏈接中提出了上述解決方案,支持組件的重疊? – Pitelk