2011-06-25 43 views
1

我正在開發有助於解決財務簿問題的教程軟件。所以它就像一個包含組合框和格式化文本框的工作表類。除了一件事以外,一切都按照我的意願工作。有沒有辦法讓我在任何時間點完成我的工作?使用Netbeans的Java桌面應用程序

舉例具體說明。有十二章,每章包含15-20個問題。每個問題都是用文本框和組合框以及一些jtabbed面板等組合設計的。如果我解決了一半工作表並想保存以便以後可以打開它,則可以打開我的軟件。有沒有辦法做到這一點。問題是每張紙都有不同的組合框和文本框,所以變量也不同。

在此先感謝

+0

如果這是一個NetBeans [Java桌面應用程序](http://stackoverflow.com/questions/2561480/netbeans-gui-editor-generating-its-own-incompreferencesible-code/2561540#2561540),請考慮添加'jsr296'標籤。 – trashgod

回答

1

您需要一個工作表模型。這個模型是一個數據結構,並沒有(本身)與GUI部件用來表示它的事實。

保存模型的狀態 - 從簡單序列化開始 - 保存到磁盤。在啓動時加載。

沿着這些線路的東西可以統一處理您的工作表。

public interface PersistentModel { 
    boolean save (OutputStream out) throws IOException; 
    boolean load (InputStream out) throws IOException; 
} 
public interface SpreadSheet extends PersistentModel { 
    Worksheet[] getWorksheets(); 
    Worksheet getWorksheet(int i); // and other related, etc. 
} 

public interface Worksheet extends PersistentModel { 
    int id(); 
    Element get(String name): 
    Element[] getElements(); 

    public interface Element<T> extends PersistentModel { 
     String getName(); 
     T getValue(); 
     boolean setValue(T v); 
    } 
} 

搖擺使用MVC,你必須掛鉤模型(工作表的數據結構保持狀態)的標準機制,並且,在GUI(可能擺動)是相同的呈現。我認爲這不是一個問題。

+0

感謝您的回覆。我沒有明確你的意思。你可以解釋嗎。我想再次問mt問題。假設我有一個包含5個組合框和5個格式化文本框的jPanel。組合框有一個列表。我在其中3個輸入了一些東西。我想把我的工作保存到這裏。所以下次我打開。所有這3個組合框和文本框應該包含與我已經選擇並鍵入的想法相同的想法 – Gaurav

+0

您的視圖 - 本例中的JPanel - 呈現「模型」數據,因此工作表映射到帶有一堆控件的JPanel。因此,您需要一種方法來從模型設置jpanel狀態,並在視圖更改時更新模型。這是標準的GUI編程。以上答案是統一模型使用的建議結構。 – alphazero

1

那麼你必須有那麼持久性存儲,以節省數據庫或文件存儲此桌面application.Think的狀態。 您也可以序列化「應用程序的狀態」。在一個對象中,並將其保存在磁盤上,當您再次啓動應用程序時,重新加載它。

+0

我第二個這個。它似乎不能保證數據庫的開銷,你可能會忘記將值寫入文件,然後在下次加載時將它們解析回程序中。 – Andrew

+0

true ..但我假設教程的問題可能來自數據庫(例如本地的德比),然後他將有一個更靈活的應用程序,而不是僅用於一些硬編碼的問題。 – Cris

+0

感謝您的幫助,但您可以詳細說明一些。 我應該通知你一些。假設我有一個包含5個組合框和5個格式化文本框的jPanel。組合框有一個列表。我在其中3個輸入了一些東西。我想把我的工作保存到這裏。所以下次我打開。所有這3個組合和文本框應該包含我已經選擇和鍵入的相同想法。 – Gaurav