Aggiornamento: Quindi si desidera che l'utente inserisca qualcosa dalla GUI. Questo è possibile ma deve essere sincronizzato poiché la GUI viene eseguita in un altro thread.
Quindi i passaggi sono:
- Creare un oggetto "supporto" che deligates il risultato dalla GUI a filo "logica"
- la "logica" thread attende per l'ingresso (usando
holder.wait()
)
- Quando l'utente ha inserito il testo, sincronizza l'oggetto "titolare" e fornisce il risultato + notifica il thread "logico" (con
holder.notify()
)
- Il thread "logico" viene rilasciato dal blocco e continua.
esempio completa:
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);
// "logic" thread
synchronized (holder) {
// wait for input from field
while (holder.isEmpty())
holder.wait();
int nextInt = holder.remove(0);
System.out.println(nextInt);
//....
}
}
ancora non capisco la domanda - cosa intendi per "mantenere l'esecuzione"? A parte questo: leggi un'esercitazione di base di Swing e l'api doc di textfield (suggerimento: setAction potrebbe valerne la pena :-) – kleopatra