我需要按住这个窗口,直到按下“完成”按钮:/



这里的第一个代码来自我无法理解的主代码的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课程。我尝试过抽象覆盖actionPerformed,我尝试过线程睡眠,等待,但无法弄清楚如何让我的FirstCheck()方法等待actionPerforme()返回我的字符串(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;
    }

    }

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

这将创建一个模式对话框,该对话框将阻止在frame.setVisible(true)的点执行代码,直到对话框关闭。

有关更多信息,请参阅"如何使用对话框"。

actionPerformed方法中,您需要存储一个"return"值,该值可以在对话框关闭后由应用程序查询。。。

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来代替。。。

看看

  • 在JOptionPane中显示阵列
  • JOptionPane和读取整数-初级Java

举几个例子,

相关内容

  • 没有找到相关文章

最新更新