2010-10-07 57 views
0

我有一個擴展JFrame的類來完成訂單。 在中間我有一個按鈕,打開一個用於查找文章的新窗口。使用gui從新類獲得返回值

我需要的是: 當我點擊btnNewArticle,搜索新文章後,並在新窗口中確認,我會得到返回文章代碼。

點擊btnNewArt - >(打開新窗口查找文章) - >確認選擇 - >作爲返回我得到文章代碼。

可能嗎?

感謝

+0

檢查aioobe的答案,這是更好 – 2010-10-07 07:41:53

回答

0

對於我這個原則的工作:

public class ArticleSearchDialog extends JDialog { 

    public static ArticleId execute(Frame parent) { 
     ArticleSearchDialog dialog = new ArticleSearchDialog(parent, true); 
     dialog.setVisible(true); 
     return dialog.getSelectedArticle(); 
    } 

    private ArticleId getSelectedArticle() { 
     return selectedArticle; 
    } 

    private void jbCancelActionPerformed(ActionEvent evt) { 
     selectedArticle = null; 
     setVisible(false); 
     dispose(); 
    } 

    private void jbOkActionPerformed(ActionEvent evt) { 
     selectedArticle = ...; //TODO 
     setVisible(false); 
     dispose(); 
    }   

    // All the rest of the dialog code. 
} 

接着,電話變得非常簡單:

ArticleId articleId = ArticleSearchDialog.execute(this); 
if (articleId != null) { 
    //TODO 
} 
1

看一看Java的對話框:How to Make Dialogs

在上面的教程,它們解釋如何做到自定義對話框,例如下面的一個:

http://download.oracle.com/javase/tutorial/figures/uiswing/components/CustomizedDialog2Metal.png

他們處理由給孩子的對話中引用它的父對話框返回值,在它在關閉時填入相關的價值。

+0

說實話我失去了。 在OrdersFrame我有: 保護無效newArticle_actionPerformed(ActionEvent的發送){ \t \t新NewArticle(); \t} \t \t 和NewArticle: \t保護無效saveArticle_actionPerformed(ActionEvent的發送){ \t \t //代碼做 \t \t this.dispose(); \t \t} \t \t 我真的不知道該怎麼做才能獲得ArticleCode的回報。 並從Java對話框例如我不明白多 HELP – gerpaick 2010-10-07 07:56:20

+0

給這個OrdersFrame到「父」對話框中的引用,也就是派生的OrdersFrame的GUI。在執行this.dispose()的代碼中,你可以做一些類似'parent.setChosenArticleCode(codeFromDialog)'的操作。 – aioobe 2010-10-07 07:58:57

+0

你能檢查我的代碼有什麼問題嗎?我發送了http://CodeTidy.com/217/(什麼是訂單..),並在260行有一個NuovaRiga方法。 http://CodeTidy.com/218/(NuovaRiga)和199行有Save()動作.... – gerpaick 2010-10-07 08:23:48