Ciao a tutti, il mio problema è questo, creato un JFRAME1 con delle JTextField riempite dall'utente voglio che il contenuto delle JTextField compaia o meglio sia "catturabile" anche da altri JFrame (per esempio il campo nome per non doverlo riscrivere più volte) tramite un'evento come un pulsante Registra inserisco il codice in forma molto leggera di quello che avevo creato:
(Tralascio i vari Import).
//////////Prima classe e primo JFrame//////////////////////////////////
public class Utente extends JFrame implements ActionListener {
private static JButton Registra;
private JPanel contentPane;
private JTextField nome;
//Creo il frame Utente.
@SuppressWarnings("unused")
public Utente(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewJgoodiesTitle = new JLabel("Registrazione Utente ");
lblNewJgoodiesTitle.setBounds(5, 5, 424, 14);
contentPane.add(lblNewJgoodiesTitle);
JLabel lblNewJgoodiesLabel = new JLabel("Nome");
lblNewJgoodiesLabel.setBounds(10, 30, 94, 14);
contentPane.add(lblNewJgoodiesLabel);
this.setComponent();
}
public void setComponent() {
nome = new JTextField();
//creo una classe anonima per settare il testo inserito nella JTextField dall'utente al verificarsi //dell'evento "clicco" sul pulsante Registra
nome.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("r")) {
dispose();
nome.setText(nome.getText().toString());
}
}
});
nome.setBounds(113, 22, 92, 22);
contentPane.add(nome);
Registra = new JButton("Registrati");
Registra.addActionListener(this);
Registra.setActionCommand("r");
Registra.setBounds(167, 232, 105, 23);
contentPane.add(Registra);
}
//metodo per prendere il "testo" inserito nella JTextField
public JTextField getNomeInserito() {
return nome;
}
//metodo che mi apre il secondo JFrame al verificarsi dell'evento "clicco" sul bottone
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("r")) {
dispose();
new PrendiValori();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
Utente frame = new Utente();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
//////////////Seconda classe e secondo JFrame/////////////////////////////////
public class PrendiValori extends JFrame{
private JPanel contentPane;
static Utente tm=new Utente();
@SuppressWarnings("unused")
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
PrendiValori frame = new PrendiValori();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
//richiamo dle costruttore e del metodo voluto per richiamare il testo del JtextField///
String nomeInserito=tm.getNomeInserito().toString();
}
//Create the frame.
private JTextField nome;
public PrendiValori() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewJgoodiesTitle = new JLabel("Utente Registrato");
lblNewJgoodiesTitle.setBounds(10, 5, 133, 14);
contentPane.add(lblNewJgoodiesTitle);
JLabel lblNewJgoodiesLabel = new JLabel("Nome");
lblNewJgoodiesLabel.setBounds(10, 30, 94, 14);
contentPane.add(lblNewJgoodiesLabel);
this.setComponent();
}
public void setComponent(){
nome = new JTextField(""+tm.getNomeInserito());
//nel JtextFiled dovrebbe apparire il testo inserito nell'altra JFrame dall'utente
nome.setBounds(113, 22, 92, 22);
contentPane.add(nome);
nome.setEditable(false); // set to read-only
setVisible(true);
}
}
//e creare una nuova JFrame PrendiValori ogni volta che clicco il pulsante registra del JFrame Utente senza cancellare o perdere quella precedente per metterle a confronto in un secondo tempo che non sono riuscito (almeno con un codice semplice) a realizzarlo//
//Una soluzione con i Database sarebbe nettamente migliore ma per adesso vorrei provare a evitarla se possibile grazie a tutti in anticipo//

Rispondi quotando