Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    JAVA - metodo per controllare i dati inseriti in una tabella

    Salve

    ho una tabella di 3 colonne (le prime 2 non editabili, la terza editabile)

    ho visto che c'è un' interfaccia CellEditorlistener con relativo metodo editingStopped()...

    bene, fin qui niente di strano ma...ho scritto questo metodo ascoltatore:

    codice:
    public void editingStopped(ChangeEvent e) {
       int rig = tabella.getEditingRow();
       try
       {
          String stringaValoreInserito = tabella.getModel().getValueAt(rig,2).toString();
          int intValoreInserito = Integer.parseInt(stringaValoreInserito);
          tabella.getModel().setValueAt(stringaValoreInserito,rig,2);
       }
       catch (NumberFormatException E)
       {
          JOptionPane.showMessageDialog(null, "Hai inserito un valore non valido, puoi inserire solo numeri");
          tabella.getModel().setValueAt(new String(""),rig,2);
       }
    }
    posso usarlo come controllore dei dati inseriti in una delle celle?
    praticamente fa un parsing da stringa a intero del valore inserito e nel caso il parsing vada a buon fine mi inserisce il valore, altrimenti cattura l'eccezione e mi fa comparire una finestra di errore.
    Il metodo dovrebbe funzionare in quanto l'ho usato in una calcolatrice per controllare i dati inseriti tramite il menu modifica/incolla in un JTextField e li funzionava

    Nel caso pensiate vada bene, come posso associare l'ascoltatore alle celle?
    ho provato tabella.addCellEditorListner ma non va

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se ricordo bene jtable implementa il listener
    se vuoi sovrascrivere uno dei metodi devi fare una classe che estenda JTable e aggiungere il tuo metodo
    ma forse con un TableModelListener sul TableModel dovrebbe funzionare allo stesso modo

  3. #3
    ok, provo con TableModelListener

  4. #4
    ehm, potresti aiutarmi? nn ci sto capendo nulla

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    class MyListener implements TableModelListener {
    public void tableChanged(TableModelEvent e) {
    int col = e.getColumn();
    int row = e.getFirstRow();
    }
    }

    dopo fai quello che vuoi con la cella che ti ho trovato

  6. #6
    grazie
    avevo risolto cosi:
    implementando TableModelListener nella classe e:

    codice:
    public void tableChanged(TableModelEvent e)
    {
       int riga = e.getFirstRow();
       TableModel model = (TableModel)e.getSource();
    
       try
       {
       String stringaValoreInserito = model.getValueAt(riga,2).toString();
       int intValoreInserito = Integer.parseInt(stringaValoreInserito);
       tabella.getModel().setValueAt(stringaValoreInserito,riga,2);
       }
       catch (NumberFormatException E)
       {
          tabella.getModel().setValueAt(new String(""),riga,2);
          JOptionPane.showMessageDialog(null, "Hai inserito un valore non valido, puoi inserire solo numeri");
       }
    }
    però ottengo un errore, che cambia in base all'ordine del catch.
    se nel catch scrivo:
    tabella.getModel().setValueAt(...);
    JOptionPane.showMessageDialog(...);

    mi compare la finestra joptionpane all'infinito, appena premo ok mi ricompare

    mentre se nel catch scrivo:
    JOptionPane.showMessageDialog(...);
    tabella.getModel().setValueAt(...);

    ottengo nella console:
    java.lang.StackOverflowError

  7. #7
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    e ti credo :rollo:
    tabella.getModel().setValueAt cambia un valore della tabella
    dunque chiama tableChanged su tutti i listener

  8. #8
    risolto, basta eliminare:
    tabella.getModel(). setValueAt(stringaValoreInserito,riga,2)
    nel try
    e sostituire
    tabella.getModel().setValueAt(new String(""),riga,2);
    con
    tabella.getModel().setValueAt(new Integer(0),riga,2);
    nel catch

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ragazzi aiuto sto impazzendo !!!!!!!!

    ok ho recuperato il numero di riga e il numero di colonna del dato modificato... ma ora come faccio a recuperare il contenuto di questa cella ??????? non trovo il metodo !!!!!!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  10. #10
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    non avevo visto... il caldo... il panico per esser vicino alla soluzione...

    String stringaValoreInserito = model.getValueAt(riga,2).toString();

    grazie, siete dei grandi !!!!!
    con questa piccola modifica ho finoto, posso andare a casa..
    buon week end a tutti
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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 © 2024 vBulletin Solutions, Inc. All rights reserved.