2012-08-27 12 views
5

** ** RESUELTOJava concepto de la idea

Soy bastante nuevo a Java y hasta ahora me encanta!

Así que solo estoy preguntando si alguien tiene una idea que podría ayudarme. Entonces esto es lo que me gustaría hacer.

Lo que estoy trabajando ahora es una aplicación que puede interactuar con mi sitio web local (cambiar títulos, contenido, etc.). Entonces, lo que me gusta hacer es mostrar un JOptionPane.showConfirmDialog, e ingresar un nombre de usuario y contraseña.

Así que, básicamente, si el nombre de usuario o contraseña es incorrecta me gustaría mostrar un JOptionPane.showMessageDialog pero al hacer clic Ok para hacerles saber que no está mal la información showConfirmDialog desaparece!

¿Alguna idea chicos? Aquí está mi código.

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.sql.*; 

public class javaTesting extends JFrame { 
    public JFrame mrFrame; 
    public int enter; 
    public JPanel mrPanel; 

    public javaTesting() throws Exception 
    { 
      Class.forName("com.mysql.jdbc.Driver"); 
      try { 
       Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/cms","root",""); 
      } catch (SQLException e){ 
       System.out.println(e.getMessage()); 
      } 
      mrFrame = new JFrame(); 
      mrPanel = new JPanel(); 

      mrPanel.setLayout(new GridLayout(4,1)); 

      JLabel user = new JLabel("Username"); 
      mrPanel.add(user); 

      JTextField user_input = new JTextField(30); 
      mrPanel.add(user_input); 

      JLabel pass = new JLabel("Password"); 
      mrPanel.add(pass); 

      JTextField pw_input = new JPasswordField(30); 
      mrPanel.add(pw_input); 

      mrFrame.setSize(700,700); 
      mrFrame.setLocationRelativeTo(null); 
      mrFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      //mrFrame.setVisible(true); 
      mrFrame.setResizable(false); 

      input(); 

      if(enter == JOptionPane.OK_OPTION) 
      { 
       JOptionPane.showMessageDialog(null, "You clicked ok!"); 
       input(); 
      } else { 
       System.exit(1); 
      } 
    } 
    public void input() 
    { 
     enter = (int) JOptionPane.showConfirmDialog(mrFrame,mrPanel,"Login Cridantiels",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE); 
    } 
    public static void main(String agrs[]) throws Exception 
    { 
     new javaTesting(); 
    } 
} 

Así que esto es lo que hice y parece funcionar bien para mí, no sé si es incorrecto. Sin embargo, funciona:]

do{ 
     input(); 

     if(enter == JOptionPane.OK_OPTION) 
     { 
      JOptionPane.showMessageDialog(null, "You clicked ok!"); 
     } else { 
      System.exit(1); 
     } 
    } while(enter != JOptionPane.CANCEL_OPTION); 
+5

Básicamente, es necesario un bucle para manejarlo ... – shan

+0

@shan gracias, hice un do {} while() bucle, y funciona bien. ¡Gracias! –

+1

una sugerencia más. en java todas las clases deben comenzar con una letra mayúscula :) si eres nuevo, es importante saber;) –

Respuesta

3

Como shan ha sugerido, debe recorrer las credenciales recopilando la parte de su código. He aquí un ejemplo

JPanel pnlDetails = new JPanel(new GridBagLayout()); 
JTextField userNameField = new JTextField(10); 
JPasswordField passwordField = new JPasswordField(10); 

GridBagConstraints gbc = new GridBagConstraints(); 
gbc.gridx = 0; 
gbc.gridy = 0; 
gbc.anchor = GridBagConstraints.WEST; 
gbc.insets = new Insets(2, 2, 2, 2); 

pnlDetails.add(new JLabel("User name:"), gbc); 
gbc.gridy++; 
pnlDetails.add(new JLabel("Password:"), gbc); 

gbc.gridx = 1; 
gbc.gridy = 0; 
gbc.anchor = GridBagConstraints.EAST; 
pnlDetails.add(userNameField, gbc); 
gbc.gridy++; 
pnlDetails.add(passwordField, gbc); 

// The result from the dialog, will be OK or CANCEL 
int operation; 
// Flag used to determine if the credentials are okay or not 
boolean badCredentials = true; 
do { 

    operation = JOptionPane.showConfirmDialog(null, pnlDetails, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); 

    String userName = userNameField.getText(); 
    char[] password = passwordField.getPassword(); 

    // You would valid you credintals here :P 
    if (userName.equals("super") && new String(password).equals("happy")) { 

     badCredentials = false; 

    } else if (operation != JOptionPane.CANCEL_OPTION) { 

     JOptionPane.showMessageDialog(null, "Invalid Credentials", "Error", JOptionPane.ERROR_MESSAGE); 

    } 

} while (operation != JOptionPane.CANCEL_OPTION && badCredentials); 

if (!badCredentials && operation != JOptionPane.CANCEL_OPTION) { 

    System.out.println("Continue program"); 

} else { 

    System.out.println("Exit program"); 

} 

System.exit(0);