2010-07-01 80 views
5

我正在尋找關於使用Java Swing進行結構化的應用程序的最佳實踐的一些指導。我通常是一個Web應用程序的人,並試圖遵循MVC。 MVC是典型的Swing應用程序嗎?如果是這樣,怎麼樣?Java Swing程序結構

回答

3

以下MVC是一個非常好的主意。據我所知,沒有正式的Java Swing框架在做這件事,它們都專注於問題的「視圖」方面。

就應用程序結構和MVC而言 - 我知道的最好的框架是Griffon。它不是Java - 它是Groovy,但它使它更具吸引力並且非常容易學習。 Griffon到Swing應用程序與Grails到web應用程序相同。

瞧瞧吧http://griffon.codehaus.org/

+1

其實這些日子裏Griffon比Groovy更Java(至少在它的實現中)。它可以讓你用Groovy或Java編寫應用程序,甚至同時編寫一個應用程序。 – aalmiray 2011-12-03 19:50:47

+0

我實際上正在等待Scala的全面支持(代碼生成)。那真的很好。我以爲你正在做這樣的事情:) – 2011-12-04 17:49:55

+0

它已經在那裏。安裝scala原型並開始商業運作。 '兀安裝-原型的http:// svn.codehaus.org /兀/原型/階/中繼/階/階-兀-archetype.zip' '兀創建應用內樣品-archetype = scala' 請注意,小程序模式尚未得到支持。你會發現你可以用Scala編寫任何Griffon工件(Model,View,Controller,Service)。你甚至可以在視圖中使用scala-swing。 – aalmiray 2011-12-04 19:17:08

0

擺有一個MVC架構的比較好的設置,但實際上它結合了視圖和控制器。 Swing中的組件可以將監聽器附加到它們(控制器方面),然後從這些監聽器(這些組件內)中可以相應地修改視圖和模型。所以爲了回答你的問題,是的,Swing會幫助用於Java應用程序的MVC方法。

在Swing中,您仍然有兩個單獨的VC:組件和偵聽器。我說他們合併的原因是因爲每個組件都可以有它自己的各自的監聽器。這些聽衆通常會進行操作,並且是控制器方面。這些組件不僅可以在屏幕上查看,還可以將信息傳遞給這些聽衆。按鈕按壓,擊鍵,焦點改變,窗口關閉等都由組件向相應組件的收聽者報告。下面是一個簡單的代碼片段,其中包含一個動作監聽器,它註冊一個按鈕。

ActionListener buttonListener = new ActionListener() { 
    public void actionPerformed(ActionEvent event) { 
     // Controller code 
    } 
}; 

JButton button = new JButton("A Button"); 
button.addActionListener(buttonListener); 

ActionListener基本上是控制器,但它取決於button以從用戶接收輸入。這就是擺動muddles從純MVC觀點來看視圖和控制器之間的差異,但在同一時間,該區別是仍然存在:

監聽控制器(減去直接解釋輸入)
組件視圖(可譯爲輸入,並將其傳遞給控制器​​)​​

希望幫助:)

+0

我不認爲聽衆是控制器。它們可以簡單地用於控制器來響應組件事件。 – 2010-07-01 20:47:07

+0

這就是我的意思。在MVC方面,他們不是,但他們可以這樣想。控制器接受輸入並修改模型。聽衆可能不一定會接受輸入,但他們當然可以用來操縱模型,並且像MVC的一些解釋一樣,修改視圖。這一切都取決於你希望增加哪些部分的控制者責任。 – peppertherj 2010-07-01 21:05:58

0

有一個JSR(296),它描述了一個框架構建Swing GUI的,但它看起來像它已經忘記了,但看看下面的文章:

http://java.dzone.com/news/jsr-296-end-jframe

我也發現以下框架,最初是基於關閉它,它看好:

想知道這些如何在實踐中解決。希望他們幫助。

+0

還有這個(但它看起來休眠) - http://github.com/hamnis/SAFF – Jon 2010-07-02 02:00:03