2012-08-27 40 views
5

** SOLVED **Java khái niệm ý tưởng

Tôi khá mới để Java và cho đến nay tôi yêu nó!

Vì vậy, tôi chỉ hỏi xem có ai đó có ý tưởng có thể giúp tôi không. Vì vậy, đây là những gì tôi muốn làm.

Những gì tôi đang làm ngay bây giờ là một ứng dụng có thể tương tác với trang web địa phương của tôi (thay đổi tiêu đề, nội dung, v.v.). Vì vậy, những gì tôi muốn làm là hiển thị một JOptionPane.showConfirmDialog, và nhập tên người dùng và mật khẩu.

Vì vậy, về cơ bản nếu tên người dùng hoặc mật khẩu sai tôi muốn hiển thị JOptionPane.showMessageDialog nhưng khi họ nhấp vào Ok để cho họ biết rằng có thông tin sai, showConfirmDialog biến mất!

Bất kỳ ý tưởng nào ?! Đây là mã của tôi.

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

Vì vậy, đây là những gì tôi đã làm và có vẻ như làm việc tốt cho tôi không biết nếu nó không chính xác. Tuy nhiên, nó hoạt động:]

do{ 
     input(); 

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

Về cơ bản, bạn cần một vòng lặp để xử lý nó ... – shan

+0

@shan cảm ơn, tôi đã làm một do {} while() vòng lặp, và nó hoạt động tốt. cảm ơn! –

+1

một gợi ý khác. trong java tất cả các lớp nên bắt đầu bằng một chữ cái viết hoa :) nếu bạn là người mới, điều quan trọng cần biết;) –

Trả lời

3

Như đã đề xuất, bạn cần lặp lại thông tin đăng nhập để thu thập một phần mã của bạn. Dưới đây là một ví dụ

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); 
Các vấn đề liên quan