2015-10-29 220 views
1

假設我們有一個存儲學生對象列表的類。還有另一個類使用圖形用戶界面來要求用戶創建一個學生對象。圖形用戶界面

我試圖做這樣的

public class Database { 

    private List<Student> students; 

    public Database { 
     students = new ArrayList<Student>(); 
    } 


    public void addStudent() { 
     StudentDialog dialog = new StudentDialog(); 
     dialog.setVisible(true) 
     students.add(dialog.getStudent()); 
    } 

} 

public class StudentDialog extends JDialog { 

    private JTextField field; 

    public StudentDialog(Frame owner) { 
     super(owner); 
     field = new JTextField(); 
    } 

    public Student getStudent { 
     return new Student(field.getText()); 
    } 

} 

public class Student { 

    private String name; 

    public Student(String name){ 
     this.name = name; 
    } 
} 

的東西。然而,由於用戶需要時間來輸入學生這不起作用。達成目標的最習慣的方式是什麼?要明確,我希望能夠使用addStudent方法隨時添加學生。

+0

分開你從你的接口需求的數據管理要求見How to Make Dialogs,應該沒有什麼區別,如果你從加入GUI,命令行或其他一些編程API。還有,什麼? *「我希望能夠使用addStudent方法隨意添加學生。」* - 那麼,你有什麼問題?如果僅僅是你不想繼續輸入東西,那麼看到 – MadProgrammer

+0

的第一部分,這實際上不起作用。當調用addStudent方法時,它會在用戶在文本字段中輸入任何數據之前結束。 – Halbort

+0

調用'setModal'並在'StudentDialog'中傳遞'true' – MadProgrammer

回答

2

當傳遞addStudent方法被調用,它完成用戶在文本字段中輸入任何數據

爲了使對話框停止代碼的當前執行,直到它被關閉,則需要前做出對話模式。添加setModal(true)到對話框構造

public class StudentDialog extends JDialog { 

    private JTextField field; 

    public StudentDialog(Frame owner) { 
     super(owner); 
     setModal(true); 
     field = new JTextField(); 
     // I assume you're actually adding this text field to the dialog 
    } 

    public Student getStudent { 
     return new Student(field.getText()); 
    } 

} 

你可以只使用一個JOptionPane代替

更多細節