2013-07-31 8 views
5

Sto lavorando al mio primo progetto Java basato su desktop. In realtà ho 2 domandeCome eseguire l'azione su OK di JOptionPane.showMessageDialog

1) Come eseguire un'azione sul pulsante OK di JOptionPane.showMessageDialog.Voglio passare a un nuovo Jframe dire x.java facendo clic su OK.

2) Ho una tabella denominata come utente. Questa tabella ha 8 colonne userid (chiave primaria), nome, password, emailid, dob, mobileno, città, data. Quattro voci di colonna devono essere recuperate da un Jframe x e quattro rimanenti dall'altro Jframe y.

ho scritto il seguente codice

Per Telaio X

PreparedStatement stm = con.prepareStatement("insert into user 

(userrid,name,password,emailid))values (?,?,?,?) "); 

     stm.setString(1,id); // id is a public variable 
     stm.setString(2,name); 
     stm.setString(3,ps); 
     stm.setString(4,email); 
    stm.executeUpdate(); 

E per Y. Frame (userid è la chiave primaria)

public class Y extends javax.swing.JFrame 
{ 
    X o = new X(); // to access id variable from frame X 

} 



PreparedStatement stm = con.prepareStatement(" update user set dob ='? ', mobileno 
='?' ,city='?', date='?' where userid= 'o.id' "); 

Mantiene generare eccezioni per la query SQL precedente

java.sql.SQLException: indice parametro fuori intervallo (1> numero di pa rameter, che è 0).

risposta

11

1) Come eseguire un'azione sul pulsante OK di JOptionPane.showMessageDialog.Voglio passare a un nuovo Jframe dire x.java facendo clic su OK.

int input = JOptionPane.showOptionDialog(null, "Hello World", "The title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); 

if(input == JOptionPane.OK_OPTION) 
{ 
    // do something 
} 
0

Lo showMessageDialog non restituisce un valore, in modo che qualsiasi deve avvenire in un JOptionPane diverso. Quello nella risposta sopra è un buon esempio.

Aggiungendo alla risposta di cui sopra, se int input è uguale a OK_OPTION, è possibile chiamare dispose() sul frame corrente (se ci si sposta da uno all'altro senza mantenere l'originale) e quindi creare una nuova istanza di la cornice desiderata.

1

Si continua gettando eccezioni per la query SQL precedente

java.sql.SQLException: Indice parametro fuori intervallo (1> numero di parametri, che è 0).

Questo perché si sta utilizzando '?' nella dichiarazione di aggiornamento e ' non è necessario. Si dovrebbe riscrivere come questo (supponendo che si sta impostando i parametri correttamente):

PreparedStatement stm = con.prepareStatement("UPDATE user SET dob = ?, mobileno = ?, city = ?, date = ? where userid= 'o.id' "); 
+0

Sì errore stupido !! L'ho capito dopo. Grazie :) – Malwaregeek

0

Ecco il mio codice prima di chiudere il mio programma java e funziona. Su no_option il programma è ancora in esecuzione ma è necessario impostare la seguente operazione di default del frame: setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);

int dialogResult = JOptionPane.showConfirmDialog(frame, "Are you sure to close this window?", "Really Closing me?",JOptionPane.OK_CANCEL_OPTION); 
      if (dialogResult==0){ 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        try{ 
        myDBExecuter.closeConnection(); 
        myDBExecutero.closeConnection(); 
        }catch(Exception e){ 
         JOptionPane.showMessageDialog(null,new JTextField(" GoodBye :(")); 
        } 
        System.exit(0); 
      }else contentPane.updateUI();//after else can you put what you want als alternative