2012-08-27 9 views
5

** risolto **Java concetto idea

Sono abbastanza nuovo a Java e finora mi piace!

Quindi sto solo chiedendo se qualcuno ha un'idea che potrebbe darmi una mano. Quindi ecco cosa mi piacerebbe fare.

Quello a cui sto lavorando in questo momento è un'applicazione che può interagire con il mio sito Web locale (cambiare titolo, contenuto, ecc.). Quindi quello che mi piace fare è mostrare un JOptionPane.showConfirmDialog, e inserire un nome utente e una password.

Quindi, in pratica, se il nome utente o la password sono errati Vorrei visualizzare un JOptionPane.showMessageDialog ma quando fanno clic Ok per far loro sapere che l'informazione non è sbagliato il showConfirmDialog scompare!

Qualche idea ragazzi ?! Ecco il mio codice.

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(); 
    } 
} 

Quindi questo è quello che ho fatto e sembra funzionare bene per me non so se la sua non corretta. Tuttavia funziona:]

do{ 
     input(); 

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

Fondamentalmente, è necessario un ciclo per gestire la cosa ... – shan

+0

@shan grazie, ho fatto un do {} ciclo while(), e funziona benissimo. Grazie! –

+1

un altro suggerimento. in Java tutte le classi dovrebbero iniziare con una lettera maiuscola :) se sei nuovo, è importante saperlo;) –

risposta

3

Come shan ha suggerito, è necessario loop che si credenziali in grado di raccogliere parte di voi codice. Ecco un esempio

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);