这里的第一个代码来自我无法理解的主代码的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
举几个例子,