Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA] Aggiornare JTextField

    Salve a tutti , questo è il mio primo messaggio e spero di aver postato correttamente.
    Allora sto cercando di creare un piccolo programmino per l'inserimento dei dati degli studenti e dei corsi.
    Questi dati dovranno essere salvati in due file separati.
    Il problema che non riesco a risolvere è questo:
    una volta inseriti i dati, che vengono salvati correttamente, vorrei che le JTextField tornassero pulite, ma la cosa non riesce. Ho provato ad aggiungere nell'actionPerformed del tasto inserisci l'invocazione del metodo repaint(), ma nulla.
    Vi posto il tutto il codice e vi ringrazio per i suggerimenti/aiuti che mi darete. (SPERO)

    codice:
    import javax.swing.*;
    
    public class Main extends JFrame {
        public Main () {
            this.add(new GUICreaFile());
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new Main();
        }
    }
    Codice PHP:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import java.lang.*;
    import java.io.*;

    public class 
    GUICreaFile extends JTabbedPane implements ActionListener throws IOException {
        private static 
    Integer matricola = new Integer(1000000);
        private 
    JMenu menu;
        private 
    JMenuBar menuBar;
        private 
    JPanel p1p2;
        private 
    JButton inserisci_studinserisci_inseg;
        private 
    JLabel label_matrilabel_cognolabel_nomelabel_annoCorsolabel_tasselabel_corsolabel_annoAccalabel_doce;
        private 
    JTextField tf_matritf_cognotf_nometf_annoCorsotf_corsotf_annoAccatf_doce;
        private 
    JRadioButton sino;
        private 
    ButtonGroup gruppoTasse;
        private 
    FileWriter sfdf;
        private 
    PrintWriter spwdpw;

        public 
    GUICreaFile () {
            
    //pannello per l'inserimento degli studenti
            
    p1 = new JPanel();
            
    p1.setLayout(new GridBagLayout());
            
    GridBagConstraints gbc = new GridBagConstraints();
            
    //grandezza del pannello
            
    gbc.weightx 3;
            
    gbc.weighty 6;

            
    //posizione della Label MATRICOLA
            
    gbc.gridx 0;
            
    gbc.gridy 0;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_matri = new JLabel("Matricola ");
            
    p1.add(label_matrigbc);

            
    //posizione dell'etichetta MATRICOLA
            
    gbc.gridx 1;
            
    gbc.gridy 0;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_matri = new JTextField(7);
            
    tf_matri.setEditable(false);    //non può essere editata dall'utente
            
    tf_matri.setText(matricola.toString());
            
    p1.add(tf_matrigbc);

            
    //posizione della Label COGNOME
            
    gbc.gridx 0;
            
    gbc.gridy 1;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_cogno = new JLabel("Cognome ");
            
    p1.add(label_cognogbc);

            
    //posizione dell'etichetta COGNOME
            
    gbc.gridx 1;
            
    gbc.gridy 1;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_cogno = new JTextField(20);
            
    p1.add(tf_cognogbc);

            
    //posizione della Label NOME
            
    gbc.gridx 0;
            
    gbc.gridy 2;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_nome = new JLabel("Nome ");
            
    p1.add(label_nomegbc);

            
    //posizione dell'etichetta NOME
            
    gbc.gridx 1;
            
    gbc.gridy 2;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_nome = new JTextField(20);
            
    p1.add(tf_nomegbc);
            
            
    //posizione della Label ANNO DI CORSO
            
    gbc.gridx 0;
            
    gbc.gridy 3;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_annoCorso = new JLabel("Anno di corso ");
            
    p1.add(label_annoCorsogbc);

            
    //posizione dell'etichetta ANNO DI CORSO
            
    gbc.gridx 1;
            
    gbc.gridy 3;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_annoCorso = new JTextField(4);
            
    p1.add(tf_annoCorsogbc);

            
    //posizione della Label PAGAMENTO TASSE
            
    gbc.gridx 0;
            
    gbc.gridy 4;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_tasse = new JLabel("Pagamento Tasse ");
            
    p1.add(label_tassegbc);

            
    //posizione del RADIO_BUTTON
            
    gruppoTasse = new ButtonGroup();
            
    si = new JRadioButton("Si");
            
    gbc.gridx 1;
            
    gbc.gridy 4;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    p1.add(sigbc);

            
    no = new JRadioButton("No");
            
    gbc.gridx 2;
            
    gbc.gridy 4;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    p1.add(nogbc);

            
    gruppoTasse.add(si);
            
    gruppoTasse.add(no);

            
    //posizione dell bottone INSERISCI_STUD
            
    inserisci_stud = new JButton("Inserisci");
            
    gbc.gridx 2;
            
    gbc.gridy 5;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    p1.add(inserisci_studgbc);
            
    inserisci_stud.addActionListener(this);


            
    //aggiungo il pannello p1 al Tab
            
    this.addTab("Studenti"p1);

            
    //costruzione del pannello per l'inserimento degli insegnameti
            
    p2 = new JPanel();
            
    p2.setLayout(new GridBagLayout());
            
    gbc.weightx 2;
            
    gbc.weighty 6;

            
    //posizione della JLabel Corso
            
    gbc.gridx 0;
            
    gbc.gridy 0;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_corso = new JLabel ("Nome Corso");
            
    p2.add(label_corsogbc);

            
    //posizione della JTextField Corso
            
    gbc.gridx 1;
            
    gbc.gridy 0;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_corso = new JTextField(20);
            
    p2.add(tf_corsogbc);

            
    //posizione della JLabel Anno Accademico
            
    gbc.gridx 0;
            
    gbc.gridy 1;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_annoAcca = new JLabel("Anno Accademico");
            
    p2.add(label_annoAccagbc);

            
    //posizione della JtextField Anno Accademico
            
    gbc.gridx 1;
            
    gbc.gridy 1;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_annoAcca = new JTextField(4);
            
    p2.add(tf_annoAccagbc);

            
    //posizione della JLabel Docente
            
    gbc.gridx 0;
            
    gbc.gridy 2;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    label_doce = new JLabel("Docente");
            
    p2.add(label_docegbc);

            
    //posizione della JTextField Docente
            
    gbc.gridx 1;
            
    gbc.gridy 2;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    tf_doce = new JTextField(20);
            
    p2.add(tf_docegbc);

            
    //posizione del JButton Inserisci_docenti
            
    gbc.gridx 1;
            
    gbc.gridy 3;
            
    gbc.gridheight 1;
            
    gbc.gridwidth 1;
            
    inserisci_inseg = new JButton ("Inserisci");
            
    p2.add(inserisci_inseggbc);
            
    inserisci_inseg.addActionListener(this);

            
    //aggiungo il tab al frame
            
    this.addTab("Insegnamenti"p2);

          try {
                
    sf = new FileWriter ("studenti.txt"true);
                
    df = new FileWriter ("insegnamenti.txt"true);
                
    spw = new PrintWriter(sf);
                
    dpw = new PrintWriter(df);
          }
          catch (
    Exception e) {
              
    System.out.println("errore");
          }
        }

        public 
    void actionPerformed(ActionEvent e) {
            
    String tmp;

            if(
    e.getSource() == inserisci_stud) {
                
    tmp tf_matri.getText();
                
    spw.print(tmp ", ");
                
    tmp tf_cogno.getText();
                
    spw.print(tmp ", ");
                
    tmp tf_nome.getText();
                
    spw.print(tmp ", ");
                
    tmp tf_annoCorso.getText();
                
    spw.print(tmp ", ");
                if(
    si.isSelected())
                    
    tmp "si";
                else
                    
    tmp "no";
                
    spw.println(tmp ";");
                
    matricola++;
                
    spw.close();
                
    p1.repaint();
            }
            else {
                if(
    e.getSource() == inserisci_inseg) {
                    
    tmp tf_corso.getText();
                    
    dpw.print(tmp ", ");
                    
    tmp tf_annoAcca.getText();
                    
    dpw.print(tmp ", ");
                    
    tmp tf_doce.getText();
                    
    dpw.println(tmp ";");
                    
    dpw.close();
                    
    p2.repaint();
                }
            }
        }


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Aggiornare JTextField

    Originariamente inviato da sonny_83
    una volta inseriti i dati, che vengono salvati correttamente, vorrei che le JTextField tornassero pulite, ma la cosa non riesce. Ho provato ad aggiungere nell'actionPerformed del tasto inserisci l'invocazione del metodo repaint(), ma nulla.
    No, i repaint() non servono affatto. Oltretutto li invochi sui due pannelli (che non centrerebbero comunque nulla con i text field). Ma in ogni caso, lo ripeto, non servono.

    Ti basta semplicemente fare es.:

    tf_matri.setText("");

    Idem per gli altri text field. Non c'è un modo più semplice .... il modo è questo!!


    P.S. Non ho letto tutto tutto il codice che è abbastanza lungo ma una cosa in più te la segnalo volentieri: i PrintWriter li istanzi nel costruttore. Però nel actionPerformed li chiudi (uno solo dei due in base alla sorgente). Quindi l'evento per quei pulsanti deve avvenire 1 volta sola. Se è così che volevi che funzionasse, ok. Ma se invece volevi poter cliccare più volte (ed è quello che immagino), allora no, devi cambiare le cose.

    Ci sarebbero altre cose da farti notare, comunque.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.