如何阻止Java运行整个代码而不等待来自用户的Gui输入

我是Java的新手,我只是寻求一些帮助
我试图创建一个程序,允许用户输入gui的名称和>>百货商店的位置。 它允许这样但是程序不等待输入>细节它只是初始化Gui类并继续处理>处理将输入Gui的细节添加到数组列表中。 但尚未输入>详细信息,因此它创建了一个空值,因为它已经超前了。

那么我怎样才能让它停下来等到输入值然后提交?

这是代码的Gui组件:

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class guiDepartment extends JFrame { private String depName; private String depLocation; private static Department newDepartment; private JTextField departmentDetails1; private JTextField departmentDetails2; private JTextField departmentDetails3; private Employee worksInInTheDepartment; public guiDepartment() { System.out.println("bob the builder "); JButton submit; JButton b1; JFrame frame = new JFrame(); departmentDetails1 = new JTextField(10); departmentDetails2 = new JTextField(10); departmentDetails3 = new JTextField(10); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(320, 75)); frame.setTitle("Department Details"); frame.setLayout(new FlowLayout()); frame.add(new JLabel("Please enter department Name: ")); frame.add(departmentDetails1); ButtonListenerDepName dListener = new ButtonListenerDepName(); System.out.println(depName); frame.add(new JLabel("Please enter department location: ")); frame.add(departmentDetails2); ButtonListenerDepName1 dListener1 = new ButtonListenerDepName1(); b1 = new JButton ("Submit"); ButtonListener listener = new ButtonListener(); b1.addActionListener(listener); b1.addActionListener(dListener); b1.addActionListener(dListener1); frame.add(b1); frame.pack(); frame.setSize(300,300); frame.setVisible(true); } public class ButtonListenerDepName implements ActionListener { public void actionPerformed (ActionEvent e ) { depName = departmentDetails1.getText(); System.out.println("and This is the departments name :"+ depName); } } public class ButtonListenerDepName1 implements ActionListener { public void actionPerformed (ActionEvent e ) { depLocation = departmentDetails2.getText(); System.out.println("and This is the departments location :"+ depLocation); } } public class ButtonListener implements ActionListener { public void actionPerformed (ActionEvent e ) { //create a new department and then adds it to thee system newDepartment = new Department(depName, depLocation); } } public static Department getDepartment() { return newDepartment; } } >>and this is the Main class import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class MainWelcomeGui1 { JFrame frame = new JFrame(); JButton b1 ; JButton b2 ; JButton b3 ; JButton b4 ; JButton b5 ; JButton b6 ; JButton b7 ; JButton b8 ; JButton b9 ; JButton b10 ; JButton b11 ; JButton b12 ; private String fName; private String sName; private String gender; private String pLevel; private String empIDnumber; private int dPayLevel; private static ArrayList allEmployees = new ArrayList(); private static ArrayList allDepartments = new ArrayList(); public MainWelcomeGui1() { frame.setTitle("Human Resources allocation screen"); JLabel hdr = new JLabel ("Welcome to the Human Resources employee control system"); b1 = new JButton ("Add a new department"); ButtonListener listener = new ButtonListener(); b1.addActionListener(listener); // addDepartmentToSystem(); b2 = new JButton ("Add a new employee to the system"); ButtonListener listener1 = new ButtonListener(); b2.addActionListener(listener1); b3 = new JButton ("Alter a employees details"); ButtonListener listener2 = new ButtonListener(); b3.addActionListener(listener2); b4 = new JButton ("Add a employee to a department of my choice"); ButtonListener listener3 = new ButtonListener(); b4.addActionListener(listener3); b5 = new JButton ("Assign a employee to a department"); b6 = new JButton ("Designate a employee as department head"); b7 = new JButton ("Delete a department"); b8 = new JButton ("To delete an employee from the system"); b9 = new JButton ("To see a list of all employees assigned to a particular department"); b10 = new JButton ("To see the amounts needed to be paid fortnightly"); b11 = new JButton ("To chane an employees pay level"); b12 = new JButton ("To change an employees name"); frame.setLayout (new GridLayout (6, 6)); frame.setBackground (Color.green); frame.add(hdr,BorderLayout.NORTH); frame.add (b1); frame.add (b2); frame.add (b3); frame.add (b4); frame.add (b5); frame.add (b6); frame.add (b7); frame.add (b8); frame.add (b9); frame.add (b10); frame.add (b11); frame.add (b12); frame.setSize(400, 100); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new MainWelcomeGui1(); } private class ButtonListener implements ActionListener { public void actionPerformed (ActionEvent e ) { if (e.getSource() == b1) { guiDepartment guiDepartment = new guiDepartment(); System.out.println("i should really come after bob the builder"); addDepartmentToSystem(); } else if (e.getSource() == b2) { guiEmployee1 theGuiEmployee = new guiEmployee1(); } else if (e.getSource() == b3) { System.out.println("hello1 button 2"); } else if (e.getSource() == b4) { System.out.println("hello button 3"); } else if (e.getSource() == b5) { guiEmployee1 theGuiEmployee = new guiEmployee1(); } else if (e.getSource() == b6) { System.out.println("hello1 button 2"); } else if (e.getSource() == b7) { System.out.println("hello button 3"); } } } public void addDepartmentToSystem() { Department departmentToAdd = new Department("berel","sam") ; System.out.println("to two"); System.out.println(departmentToAdd); departmentToAdd = guiDepartment.getDepartment(); System.out.println("got to three"); allDepartments.add(departmentToAdd); System.out.println("to four+"); System.out.println(allDepartments); } } 

你不应该有一个JFrame启动其他JFrame,特别是如果你想让子窗口作为一个modal dialog – 一个停止启动窗口中的代码直到它被完全处理的对话框。 在这种情况下,通过使用模态JDialogs代替对话框窗口的JFrames来创建对话框窗口对话框。

例如:

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MainWelcomeGui2 { public static void main(String[] args) { final JFrame frame = new JFrame("Main GUI"); JButton addDeptButtonLaunchJFrame = new JButton( "Add a New Department, Launch JFrame"); JButton addDeptButtonLaunchJDialog = new JButton( "Add a New Department, Launch JDialog"); addDeptButtonLaunchJDialog.addActionListener(new LaunchJDialogListener( frame)); addDeptButtonLaunchJFrame.addActionListener(new LaunchJFrameListener()); JPanel panel = new JPanel(); panel.add(addDeptButtonLaunchJDialog); panel.add(addDeptButtonLaunchJFrame); frame.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } } class LaunchJDialogListener implements ActionListener { JDialog dialog; public LaunchJDialogListener(JFrame parentFrame) { JButton doneButton = new JButton(new AbstractAction("Done") { public void actionPerformed(ActionEvent e) { dialog.dispose(); } }); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(100, 100)); panel.add(doneButton); dialog = new JDialog(parentFrame, "Dialog", true); dialog.add(panel); dialog.pack(); dialog.setLocationRelativeTo(null); } @Override public void actionPerformed(ActionEvent e) { System.out.println("called before setting dialog visible"); dialog.setVisible(true); System.out .println("called after setting dialog visible. Note that this line doesn't show until the dialog disappears"); } } class LaunchJFrameListener implements ActionListener { JFrame frame; public LaunchJFrameListener() { JButton doneButton = new JButton(new AbstractAction("Done") { public void actionPerformed(ActionEvent e) { frame.dispose(); } }); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(100, 100)); panel.add(doneButton); frame = new JFrame("JFrame"); frame.add(panel); frame.pack(); frame.setLocationRelativeTo(null); } @Override public void actionPerformed(ActionEvent e) { System.out.println("called before setting frame visible"); frame.setVisible(true); System.out .println("called after setting frame visible. Note that this line shows up immediately."); } }