2013-02-13 35 views
-3

這裏的第一個代碼來自主代碼的prerec我無法弄清楚。我需要保持這個窗口,直到完成按鈕被按下:/

boolean CompanyLoaded, StartingNum = true; 

FirstCheck newwin = new FirstCheck(); 

public CollectNumbers() { 

     if (StartingNum = true) firstCheck = newwin.FirstCheck(); <----Runs FirstCheck okay 

     if (CompanyLoaded = true) LoadCompany(); 

從這裏開始我有我的FirstCheck類,我會在下面發佈。我已經嘗試了抽象overiding的actionPerformed,我已經嘗試線程睡眠,等待,並無法弄清楚如何讓我的FirstCheck()方法等待,直到actionPerformed()返回我的字符串(INT)。任何幫助,將不勝感激!

import java.awt.event.*; 

import java.awt.*; 

import javax.swing.*; 

import java.io.*; 

import java.util.*; 

abstract class FirstCheck extends JFrame implements ActionListener { 

    static int num; 
    static boolean bnum = true; 
    JTextField NumberEntry; 

    Toolkit tools = Toolkit.getDefaultToolkit(); 
    Dimension windowLocVar = tools.getScreenSize(); 


    public int FirstCheck() { 

     JFrame frame = new JFrame(); 

     NumberEntry = new JTextField(); 

     JButton Done = new JButton("Done"); 
     Done.addActionListener(this); 

     JLabel label = new JLabel("Starting Check Number?"); 
     label.setVerticalTextPosition(JLabel.BOTTOM); 
     label.setHorizontalTextPosition(JLabel.CENTER); 

     JPanel panel = new JPanel(); 
     panel.setLayout(new GridLayout(3,1)); 
     panel.add(NumberEntry); 
     panel.add(label); 
     panel.add(Done); 

     frame.add(panel);      
     frame.pack();          
     frame.setVisible(true);        
     frame.setSize(250,150);        
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocation(windowLocVar.width/2-300,windowLocVar.height/2-100); 


     //try { 
     // Thread.sleep(5000); 
     // } 
     //catch(InterruptedException e) { 
     // // Restore the interrupted status 
     // Thread.currentThread().interrupt(); 
     // } 



    } 



    public int actionPerformed(ActionEvent e) { 
       bnum = false; 
       num = Integer.parseInt(NumberEntry.getText()); 
       return num; 

    } 


    } 

回答

2

而不是JFrame frame = new JFrame()使用JDialog frame = new JDialog((Frame)null, true)

這將創建一個模式對話框,該對話框將阻止在frame.setVisible(true)處執行代碼,直到對話框關閉。

查看How to use dialogs瞭解更多信息。

在你actionPerformed方法,您將需要存儲,可以通過應用程序一旦關閉對話框詢問「返回」值...

public void actionPerformed(ActionEvent e) { 
    bnum = false; 
    num = Integer.parseInt(NumberEntry.getText()); 
    Object source = e.getSource(); 
    if (source instanceof Component) { 
     // Close the dialog.... 
     SwingUtilities.getWindowAncestor((Component)source).dispose(); 
    } 
} 

更新

同樣,你可以用JOptionPane代替...

看看

作爲一對夫婦的例子

+0

+1不錯的答案:) – 2013-02-13 23:20:05

+0

謝謝你的建議!我會仔細查看你提供的鏈接! – 2013-02-13 23:26:15

+0

@JAKOBBERRY知識是強大的東西,玩得開心;) – MadProgrammer 2013-02-13 23:30:14

相關問題