Ci sono diverse soluzioni. La più facile, secondo me, è avere 2 metodi: pre_input() e post_input().
Esegui tutti i calcoli e le elaborazioni che vuoi nel pre_input(); nel momento in cui ti serve l'input utente fai partire un JDialog, salvi l'input e fai partire (dal metodo che gestisce l'actionPerformed del JButton) il post_input().
Ho fatto al volo un paio di classi, vedi se vanno bene.
codice:
/*
* InputUtente.java
*
* Created on 7 febbraio 2007, 19.15
*/
import javax.swing.*;
public class InputUtente {
private static String [] dati_utente;
public static void main(String [] args) {
pre_input();
}
public static void pre_input() {
//In questo metodo fai tutti i calcoli che vuoi.
dati_utente = new String[4];
myInputDialog mid = new myInputDialog();
//Fai partire il JDialog per l'input
mid.askUserInput(dati_utente);
}
public static void post_input() {
//Qui elabori l'input dell'utente.
for(int i=0; i<dati_utente.length; i++)
System.out.println(dati_utente[i]);
}
}
class myInputDialog extends javax.swing.JDialog {
public myInputDialog() {
this(null, true);
}
/** Creates new form myInputDialog */
public myInputDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
//Metodo che fa comparire il JDialog per l'input
public void askUserInput(String [] dati_utente) {
this.dati_utente = dati_utente;
this.setVisible(true);
}
//Metodo generato dal GUI designer di NetBeans, puoi modificarlo come meglio credi
private void initComponents() {
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Input Utente");
jButton1.setText("OK");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
inputInserito(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)
.addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)
.addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)
.addComponent(jTextField1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}
//Gestore dell'actionPerformed per il JButton
private void inputInserito(java.awt.event.ActionEvent evt) {
this.dati_utente[0] = jTextField1.getText();
this.dati_utente[1] = jTextField2.getText();
this.dati_utente[2] = jTextField3.getText();
this.dati_utente[3] = jTextField4.getText();
InputUtente.post_input();
this.dispose();
}
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private String [] dati_utente;
}