2009-11-12 251 views
1

我需要開發一些使用swing的java gui。
幾年前,我確實開發了一點搖擺。
但是,看起來,這相當耗費精力,沒有太多工具可以幫助你。搖擺發生器

但我確信今天應該會更容易,必須有工具。
我想使用某種發生器或可能是一個實用程序,甚至是一個框架。
我知道Eclipse有幾個插件,Netbeans有一個很好的內置工具。我也聽說過關於Jide框架的好消息。

但是我仍然不知道他們中的任何一個。

是否有一個工具/實用程序/發電機/框架,你已經使用,真的幫助你?

顯然我更喜歡那些免費的東西,但是如果你知道某件真的非常好而且花錢的東西,那也可以起作用。

謝謝。

+0

你可以看看我試圖建立一個表單生成器:http://code.google.com/p/swing-formbuilder/ – eav 2011-04-06 07:36:52

回答

2

多年來,我一直使用內置「Matisse」表單編輯器的NetBeans。它具有內置IDE的優點,因此表單編輯和代碼生成相當無縫。如果您是Swing的新手,那麼可以大幅提升(只要您繼續使用NetBeans作爲您的IDE)。

有一些問題,但是:

  1. 不能輕易移動窗體到另一個IDE。生成的代碼可能工作,但表單數據本身存儲一個XML文件。
  2. 如果有兩個人同時編輯表單,SVN/CVS中可能會出現幾乎不可能調和的衝突。 XML不是人類可讀的。
  3. 在過去,我發現表單XML文件損壞自身,這將導致表單生成錯誤。
  4. 表單編輯器有時會讓自己的頭腦發生變化,當你做一些像調整控件一樣簡單的東西時,就會破壞你的安排。

儘管如此,我仍然繼續使用它,因爲沒有其他東西看起來吸引我。

+0

是的,馬蒂斯是一個快速完成工作的方法。 – Geo 2009-11-12 17:31:05

+0

馬蒂斯只有一個「t」。 – 2009-11-12 18:21:54

2

實際上,到目前爲止我發現的編寫Swing框架的更快的方法是使用Groovy SwingBuilder,但是您必須在項目中包含groovy的jar以使用它。這是從他們的網站採取了一個例子,它的主要synctactic糖,但它可以幫助:

def frame = swing.frame(title:'Frame', defaultCloseOperation:JFrame.EXIT_ON_CLOSE, pack:true, show:true) { 
    vbox { 
     textlabel = label("Click the button!") 
     button(
      text:'Click Me', 
      actionPerformed: { 
       count++ 
       textlabel.text = "Clicked ${count} time(s)." 
       println "Clicked!" 
      } 
     ) 
     widget(sharedPanel()) 
     widget(sharedPanel()) 
    } 
} 

否則有一些「視覺」的方法解決問題,但他們不會讓你跟你寫的接口,以便迅速整合(例如jvider),但NetBeans和Eclipse有一些插件可以完成骯髒的工作,但是和以前一樣:您無法集成如此無縫。

1

就GUI構建器,NetBeans和IDEA(現在開源9.0 Beta版)而言,它們都有免費的GUI構建器。

GUI構建器具有Jason所說的所有缺點。如果你想好好控制正在發生的事情,但仍然希望用手來編寫複雜的GUI,請查看MigLayout

1

Eclipse的Visual Swing是一個有前途的新貴。它不是世界上最穩定的東西,但它在代碼中完成所有形式的東西,所以沒有單獨的文件難以在源代碼管理中讀取和合並。當你第一次嘗試時,需要一些習慣。但是,一旦你學會了解錯誤,你很快就開發了Swing GUI。

1

如果您想使用gui構建器,並且存在Jason提到的缺點,但您還需要包含由matisse佈局使用的jar文件,那麼可能會也可能不會一個問題。但是如果你打算在開發用戶界面的時候,你很快會發現大部分的gui構建者都有很多缺點,當你不得不改變某些東西時,生成的代碼並不總是很清晰,並且臃腫不堪。你也會發現,一旦你變得精通,你可以用手工比gui builder更快地寫出一個ui,並且你將會真正理解正在發生的事情。

所以我說遠離gui builders,你會創建更好和更易維護的UI,並且有一定的時間和經驗不會想要使用gui builder。只需從佈局上啓動一些基本的Swing tutorials即可。

1

我可以虛心地建議Metawidget嗎?

它需要一種不同的UI開發方法 - 去除大部分容易出錯,繁瑣的工作,同時仍保留傳統工具包的靈活性。它集成了你現有的前端(Swing,在你的情況下)和後端(Java,我猜),並在運行時工作(無代碼生成)。

有短短的介紹視頻在這裏:

http://metawidget.org/videos.html

如果你有機會去看一看,我會非常感謝您的反饋意見。

Regards,

Richard。

2

我的建議是WindowBuilder Pro。它是一個GUI設計器,可作爲Eclipse IDE的插件。

您可以使用它來生成Swing,SWT或GWT GUI,甚至可以根據需要生成一些Eclipse RCP代碼。我必須說,它對我來說效果很好。但我沒有用它來生成任何Swing代碼,因爲我寧願使用SWT來代替。