Update:. Therefore, you want to wait for the user to enter something from the GUI. This is possible, but needs to be synchronized as the GUI starts in a different thread.
So the steps are:
- Create a holder object that associates the result with a graphical interface with a logical flow
- A "logical" thread is waiting for input (using
holder.wait() ) - When the user has entered the text, he synchronizes the holder object and gives the result + notifies the logical flow (using
holder.notify() ) - The "logical" thread is freed from blocking it and continues.
Full example:
public static void main(String... args) throws Exception { final List<Integer> holder = new LinkedList<Integer>(); final JFrame frame = new JFrame("Test"); final JTextField field = new JTextField("Enter some int + press enter"); frame.add(field); field.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { synchronized (holder) { holder.add(Integer.parseInt(field.getText())); holder.notify(); } frame.dispose(); } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true);
dacwe source share