2012-02-28 106 views
4

因此,目前我正在嘗試在Java中進行我的第一個簡單遊戲,並且我已經開始處理GUI。我已經準備好了我想要UI的樣子,但是我沒有花太多時間在java中處理GUI,所以我有點迷路。我不明白,如果GUI應該是一個獨立於邏輯的實體,或者構建在同一個類中。例如:我有一個包含顏色和值的卡片類,但是更好地編寫一個單獨的類來僅顯示和使用圖形來表示其動作偵聽器使用我的實際對象Card類邏輯的卡片?或者,我只是將GUI和邏輯編碼到一個類中,因爲那樣我必須擴展JComponent,而不是我原來的卡類。Java GUI問題?

此外,我真的很困惑如何一個專業的外觀GUI看起來像編碼明智?就像遊戲League of Legends一樣,客戶端使用Java編碼,而Frame甚至不是本地Windows框架。是按鈕和框架,不是所有的自定義圖片編碼爲像按鈕或擴展JComponent的組件等?我非常瞭解Java編程的邏輯,因爲我在AP計算機科學方面的知識,但是對於我想要完成的任務而言,該類非常基本,我無法在Google上找到任何地方學習專業技術和實踐。

我目前使用NetBeans IDE中

+2

閱讀,閱讀,閱讀。並且練習很多。 – Pedantic 2012-02-28 04:08:48

+0

開始的一個很好的地方就是oracle發佈的Java教程。它們通常包含示例以及關於如何最好地使用組件的說明:http://docs.oracle.com/javase/tutorial/uiswing/components/ – 2012-02-28 04:12:20

+3

調查MVC(模型視圖控制器)。你應該努力分離關注點 - 每個班級應該執行一個目的。 – 2012-02-28 04:12:59

回答

4

您將通過經驗學到很多東西。

許多最先進的接口甚至不再像Java一樣。至少頂層延伸JComponent,但按鈕​​不一定非要。主應用程序可以使用自定義繪圖方法來定製外觀或其他庫來顯示3-D圖像。一旦你有使用許多不同的組件和庫的經驗,你會開始看到他們如何能夠一起形成一個有凝聚力的應用程序。

要解決您的對象模型問題,絕對要從您的對象中分離出一些類來顯示它們。一個對象最終可以被應用程序的不同部分使用,通過網絡傳輸,在屏幕上顯示,作爲文本發送或任何數量的不同事物。如果你試圖將所有這些代碼放入你的對象模型中,那將是一團糟。

嘗試在你的對象上構建常識方法。考慮與這些對象交互時,應用程序的所有不同部分將使用哪種方法,問題和屬性。任何一次性的,只在一個地方有用的東西,不要放在主要的對象類中。

另外,請記住,您始終可以移動功能。使用像Eclipse這樣的好IDE可以很容易地將類的方法,屬性和其他部分向上或向下推入超類或子類。如果您編寫了一些處理對象的功能,請將其放入使用它的模塊中。當您需要另一個模塊中的相同功能時,請將其移至您的對象模型,以便共享。使用正確的工具很容易。

+2

迴應上述 - 子類從框架中使用的所有內容。即使它允許你覆蓋將來的很長一段時間。在現實生活中,你不是在編寫一次性代碼,而是在編寫將來必須支持的內容。 – Pedantic 2012-02-28 04:43:13

0

如果你正在做一個AWT或Swing GUI我會建議使用IDE像Netbeans它有一個內置的GUI構建了AWT和Swing。無論您是否想要使用它,它都可以幫助您學習一個構建GUI的方式。

正如評論者提到的教程也非常好,雖然我個人發現書比在線教程更容易閱讀。

此外,代碼完成對於閱讀Java Docs和學習每個類可能的方法是非常有用的。

+2

我目前使用Netbeans,但由於學習目的,我寧願主要硬編碼一切,以瞭解圖像和什麼不是。這實際上更像是我應該如何使用GUI來構建我的編程來模擬專業程序。 – Rendition 2012-02-28 04:16:52

+0

@Rendition我只是說生成的代碼可以是**一種方式**的參考,如果你能做得更好,就可以自由地做到這一點。事實上,我鼓勵你自己去做!只是一個建議,如果你真的迷路了。 – Hawken 2012-02-28 04:22:24

+1

我會遠離GUI構建器並學習語言。我或許可以創建一個GUI,它比任何故事登臺GUI生成器可以生成的功能更精確,更精確。 – Pedantic 2012-02-28 04:31:21

0

首先,您應該對Java有一個清晰的概念。我想推薦你使用Swing和IDE NetBeans。你會在NetBeans網站和youtube找到好的GUI相關教程。希望這對你有很大的幫助。