2011-03-22 15 views
1

我想討論一下Java GUI,現在我仍然在學校,我已經爲班級做了輕量級的開發(我們簡要地介紹了它)。瞭解Java GUI的開發,管理和設置JComponents

簡單而簡單,我無法做任何我想做的事情,我想要建立一個漂亮的整潔佈局,但是當您最大化它時,一切都會變得越來越糟糕。 JButton放在GridLayout中時很大,或者當我明確指定按鈕的大小時,它們橫跨整行,等等。使用Java gui開發之後,它是一個又一個令人頭痛的問題。

隨着微軟WPF/XAML用戶界面的開發更直接,感覺像HTML/CSS。設置寬度,高度,邊距和填充效果非常好,知道我的組件將放在哪裏。你甚至可以設計自定義的外觀和感覺。

我想知道你們是否對開始Java GUI開發的人有任何提示和資源。我不明白的一件事是用JFrame發佈新的東西,比如遊戲。

在啓動您的指示面板上有4個按鈕。

玩遊戲 - 帶你到一個新的面板玩遊戲。 大廳 - 帶你去聊天,如界面 等

這些應該是面板嗎?或者更多的JFrame,比如當用戶點擊一個按鈕時,我啓動Play Game JFrame然後關閉菜單JFrame。我真的沒有Java guis的想法。

回答

2

首先看看Mig Layout。這是一個真正的全功能佈局管理器,目前是最好的一個。如果由於某種原因你不能使用外部依賴關係,那麼你會想看看GridBagLayout。 GridBagLayout將足夠強大以滿足您的所有需求,但它不像Mig Layout那樣容易使用。

在你將建立你將有一個單一的JFrame,只是過渡JPanels來顯示不同的屏幕應用的99%。

+0

MigLayout看起來很漂亮,它已經做了一些佈局。 – Bombcode 2011-03-24 02:44:31

3

確保您瞭解並使用合適的佈局管理器。這個Swing教程對於學習每種工作方式非常有用:http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html

也意識到可以通過將面板放在另一個面板中來佈局佈局。這有時是在保持簡單的同時達到預期效果所必需的。

爲了您的最後一個問題,按鈕可以只被添加到可以蜜蜂一幀之前增加額外的面板的面板。

2

首先,建立用戶界面面板時,我的一個經驗法則是從不直接設置任何位置或大小。

然後,第二規則是從未在任何像素優選,最小或最大尺寸直接設置(從而當從一個監視器改變爲另一個,具有更高或更低的分辨率DPI會咬你)。在我的博客上看看this post,雖然很老,但今天仍然有用。

第三,我儘量避免嵌入面板到面板,因爲它會導致部件對準問題和不一致的元件尺寸。

最後,我嘗試在大多數表單中嘗試使用DesignGridLayout,並且如果UI佈局太複雜(但複雜的UI佈局也可能表示UI設計不佳),有時會回覆到GridBagLayout。

作爲關於如何構建UI應用程序(通常包含任何UI工具包,但特別是Swing)的一般註釋,存在several recommendations,但很難找到具體的實現,您必須閱讀很多關於這些,然後嘗試找到最適合你的方式。

0

是的,歡迎光臨。與HTML/Javascript/CSS相比,您可以獲得與花在學習上的時間同等水平的複雜性和拋光效果。

(我沒有找到任何東西的所有文件 - 谷歌,並開始查找)。

Swing,根據我的經驗,我肯定覺得我讀了1000萬份文檔,玩過一些演示,每隔3到4個月花費2-3個小時,並且你對api的某些工作有一些瞭解,那麼不知道爲什麼有些人不這樣做。這很棒。你想要一些東西來工作,然後實現它,然後繼續處理其餘的gui。

在我看來,Java swing迫切需要一個開源JQuery類型的插件庫,它將爲您的JComponents生成動畫並以您喜歡的方式呈現它們。它在桌面上是一個明確的二等公民,尤其是現在,在過去幾年中,CSS/HTML瀏覽器渲染複雜性已經有所提高。

靈氣外觀風格是一個絕對正確的方向上的改進。

您也可以移到JavaFx。祝你好運。顯然它非常好。我還沒有時間或耐心。

如果您可以使用第三方庫:請嘗試使用JAXX作爲選項。這個想法是創建一個css類型實現,其中樣式元素被分離成可以快速配置和測試的文件。

這裏閱讀很好的介紹:today.java.net/pub/a/today/2006/03/30/introducing-jaxx.html

JavaCSS在JAXX項目中找到。 JAXX是swing gui界面的xml格式樣式實現。您可以編寫一個xml文檔和一個css樣式文檔,並且能夠將GUI的輸入和輸出綁定到您的java實現引擎。 CSS樣式文件允許快速複雜的GUI開發。使用jaxx jar引擎,xml代碼被轉換爲java代碼,其運行速度與部署在.java類文件中一樣快。

該項目已持續由法國組的程序員,現在在這裏找到:http://www.nuiton.org/projects/jaxx/files

演示至少相當大部分的東西似乎工作。

最新版本是JAXX 2.4.2。最新的更新是2011年5月或6月。雖然是法文版,但文檔仍以英文易於理解。只需翻譯。

JAXX的原始伊桑尼古拉文件的最後更新於17-07-2009

http://sourceforge.net/projects/jaxx/

請注意:www.jaxxframework.org/wiki/Main_Page是一個死鏈接,該網站被中止。取而代之的是一個鏡像,可以在buix.labs.libre-entreprise.org/original-jaxx/www.jaxxframework.org/wiki/Main_Page找到。html

本文檔對理解jaxx及其用法的含義和用途至關重要。


如果你有耐心,有很多的時間,有興趣,也期待在由切特·哈澤時機框架,以動畫的組件,就可以創建複雜的效果。它需要學習曲線和時間。

或支付讓您的gui組件由專業的第三方庫處理? (呃,這是一個明顯的答案,沒有人花費時間和精力去學習創造一個漂亮的gui,只是要交出來)。

因此,花三年時間學習,然後向他人索取moola?

另一個想法 - 我非常想探索,但它看起來可能是一個噩夢實施,儘管每個人都說它很容易,得到一個開源的webbrowser html/csss渲染器嵌入,並設計你的gui,使用CSS/JQuery/HTML。

但它看起來像你必須先從源代碼編譯web瀏覽器(mozilla),然後將其包裝在另一個程序(例如JRex)中,然後將整個東西放到像Jetty這樣的迷你客戶端服務器中,有一個前端實現,你半途而廢。

而且只有當瀏覽器實際上符合CSS2標準和HTML4時。忘掉HTML5。這是爲了未來。

好吧,今天我脾氣暴躁,但我不認爲抱怨是完全沒有道理的。