[英]Collecting data from various different JFrames efficiently
請考慮以下情形:
我有一個JFrame“ Main ”,它有一個jButton“ caravanDataButton ”,它可以打開另一個JFrame“ CaravanData ”。
CaravanData有幾個JTextField。 其目的是向用戶提出問題,並在用戶完成操作后將答案傳送回Main 。
我的問題: 從子JFrame到調用父JFrame的數據傳輸的最有效方法是什么(或者從此示例中從CaravanData回到Main)
理想情況下,我想執行以下操作:
class Main
{
public Main
{
CustomVariable data = new CaravanData();
}
}
但是,構造函數沒有返回類型。 但這是最好的方法,因為在CaravanData類完成其業務之前,不會為變量“ data”分配值。
我的替代解決方案是使用getter和setter。 但是我必須等到用戶完成表格后才能檢索數據。 我使用了while循環:
class Main
{
public Main
{
CaravanData caravanData = new CaravanData();
while (caravanData.isUserFinished == false)
{//...Do nothing}
// Once the user has finished - collect the data:
CustomVariable data = caravanData.getRelevantData();
}
}
class CaravanData
{
...
public boolean isUserFinished()
{return ifUserHasCompletedForm;}
public CustomerVariable getRelevantData()
{
...
return data;
}
}
我認為這種方法根本無效。 有更好的技術嗎? 我有幾個JFrame,因為有很多問題要問。 我不確定該如何措辭以在網上找到答案。 我確實考慮過使用線程嗎? 停止一個進程,直到另一個進程完成。 但是我給您的印象是,當任務從EDT中消耗大量時間時,您僅使用線程嗎?
嘗試將JDialog用作子窗口。 JDialog的setVisible(true)
方法將阻塞,直到處理掉對話框為止(通常是從對話框內部調用setVisible(false)
)
之后,您可以通過getRelevantData()
方法加載所有數據。
class Main
{
public Main
{
CaravanData caravanData = new CaravanData();
// Show the dialog - setVisible(true) blocks till ok is pressed
caravanData.setVisible(true);
// Once the user has finished - collect the data:
CustomVariable data = caravanData.getRelevantData();
}
}
class CaravanData extends JDialog
{
...
// Called by an ActionListener for the OK Button
private void okButtonPressed(){
setVisible(false);
}
public CustomerVariable getRelevantData()
{
...
return data;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.