Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    82

    Controllo del testo scritto nel jTextField

    Salve, ho creato una JFrame che in moche parole dovrebbe controllare il numero scritto nel primo jTextField e con 3 bottoni (Binario, esadecimale, ottale) dovrebbe convertire quel testo e scrivere quello convertito in un'altro jTextField. Io ho messo come codice ad esempio del bottone Binario questo:
    jTextField2.setText(Integer.toBinaryString(...));
    però ora qui ho il problema perchè al posto dei puntini devo dirgli di prendere il testo scritto nel primo jTextField. Spero di essere stato chiaro xD

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

    Re: Controllo del testo scritto nel jTextField

    Originariamente inviato da Nike00
    Salve, ho creato una JFrame che in moche parole dovrebbe controllare il numero scritto nel primo jTextField e con 3 bottoni (Binario, esadecimale, ottale) dovrebbe convertire quel testo e scrivere quello convertito in un'altro jTextField. Io ho messo come codice ad esempio del bottone Binario questo:
    jTextField2.setText(Integer.toBinaryString(...));
    però ora qui ho il problema perchè al posto dei puntini devo dirgli di prendere il testo scritto nel primo jTextField. Spero di essere stato chiaro xD
    Passi:
    1) Leggi la stringa dal primo text field ( textfield.getText() ).
    2) Converti la precedente stringa in un valore primitivo (es. int con Integer.parseInt(), può lanciare una eccezione = input errato).
    3) A seconda del pulsante (quindi della base da usare) usi i metodi di Integer toBinaryString() o toHexString() ecc...
    4) Imposti la stringa sul secondo text field ( setText() ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    82
    Non credo di aver capito bene ti do tutto il codice e chiedo se per favore potresti farmi un esempio con il primo (mi riferisco a jTextField2.setText(Integer.toBinaryString(...)) :

    package convertitore;

    public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
    initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jLabel2 = new javax.swing.JLabel();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jTextField2 = new javax.swing.JTextField();
    jLabel3 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);

    jLabel1.setText("Scrivi il numero che vuoi convertire:");

    jTextField1.setText("");

    jButton1.setText("Binario");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    });

    jLabel2.setText("Converti in:");

    jButton2.setText("Esadecimale");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton2ActionPerformed(evt);
    }
    });

    jButton3.setText("Ottale");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton3ActionPerformed(evt);
    }
    });

    jLabel3.setText("Numero convertito:");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addGroup(layout.createParallelGroup(javax.swing.G roupLayout.Alignment.LEADING)
    .addComponent(jLabel2)
    .addGroup(layout.createSequentialGroup()
    .addComponent(jButton1)
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.UNRELATED)
    .addComponent(jButton2)
    .addGap(10, 10, 10)
    .addComponent(jButton3))
    .addComponent(jLabel3)
    .addGroup(layout.createParallelGroup(javax.swing.G roupLayout.Alignment.TRAILING, false)
    .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
    .addContainerGap(161, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jLabel1)
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED)
    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED)
    .addComponent(jLabel2)
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.UNRELATED)
    .addGroup(layout.createParallelGroup(javax.swing.G roupLayout.Alignment.BASELINE)
    .addComponent(jButton1)
    .addComponent(jButton2)
    .addComponent(jButton3))
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.UNRELATED)
    .addComponent(jLabel3)
    .addPreferredGap(javax.swing.LayoutStyle.Component Placement.UNRELATED)
    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(139, Short.MAX_VALUE))
    );

    pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    jTextField2.setText(Integer.toBinaryString(...));
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

    }

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

    }


    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new NewJFrame().setVisible(true);
    }
    });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration

    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nike00
    Non credo di aver capito bene ti do tutto il codice e chiedo se per favore potresti farmi un esempio con il primo (mi riferisco a jTextField2.setText(Integer.toBinaryString(...))
    toBinaryString ha come parametro un int, un valore primitivo. È chiaro che non puoi passargli lo String che ottieni con getText() dal primo text field!!! Devi convertire la stringa in int utilizzando Integer.parseInt(). È questa operazione di parsing può lanciare la eccezione NumberFormatException, cosa che poi vuol dire che è stato scritto qualcosa di sbagliato nel text field.

    Un'altra cosa: evita come la peste di farti generare il codice per l'interfaccia utente dal tuo IDE. Impara tu a scrivere il codice per creare/gestire la interfaccia utente!! Lo so che con l'IDE è più veloce ma .... il codice generato è una schifezza immonda! E credo che lo puoi vedere pure tu ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    82
    Un'altra cosa: evita come la peste di farti generare il codice per l'interfaccia utente dal tuo IDE. Impara tu a scrivere il codice per creare/gestire la interfaccia utente!! Lo so che con l'IDE è più veloce ma .... il codice generato è una schifezza immonda! E credo che lo puoi vedere pure tu ....
    Sì lo so e lo so anche fare ma per motivi di tempo non ho potuto
    toBinaryString ha come parametro un int, un valore primitivo. È chiaro che non puoi passargli lo String che ottieni con getText() dal primo text field!!! Devi convertire la stringa in int utilizzando Integer.parseInt(). È questa operazione di parsing può lanciare la eccezione NumberFormatException, cosa che poi vuol dire che è stato scritto qualcosa di sbagliato nel text field.
    Di sicuro oggi sono diventato cretino... Ma non riesco propio a farlo per questo prima ti avevo chiesto un piccolo esempio perchè non riesco più a capire niente xD

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nike00
    Ma non riesco propio a farlo per questo prima ti avevo chiesto un piccolo esempio perchè non riesco più a capire niente xD
    int num = Integer.parseInt(jTextField1.getText());

    Ripeto che può lanciare NumberFormatException. In tal caso si potrebbe ad esempio mostrare una message box che avverte l'utente dell'errore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    82
    Ecco cosa dovevo farci grazie mille... L'ultima cosa ho un class main con scritto:
    public class Main {
    public static void main(String[] args) {

    }

    }
    cioè semplice semplice, come faccio per mettere un comando che aprendo questo mi apre la NewJFrame?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nike00
    cioè semplice semplice, come faccio per mettere un comando che aprendo questo mi apre la NewJFrame?
    Una cosa del tipo:

    codice:
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new TuoFrame();
                }
            });
        }
    (ammesso che nel costruttore di TuoFrame venga fatto il setVisible(true)).

    E se ti chiedi cosa sono invokeLater, Runnable ecc.., leggi Threads and Swing
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    82
    Sì, giusto anch'io avevo fatto così ma mi dava errore al SwingUtilities.invokeLater e non capisco il perchè

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nike00
    Sì, giusto anch'io avevo fatto così ma mi dava errore al SwingUtilities.invokeLater e non capisco il perchè
    Posta il pezzetto di codice che hai scritto, vediamo.
    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.