2013-04-03 4 views
0

У меня есть программа на Java, которая имеет два класса: класс Main и класс appGUI.Получение пароля

Это Основной класс:

import java.math.BigInteger; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

public class Main { 

    /** 
    * @param args 
    */ 

    public static void main(String[] args) throws Exception { 

     appGUI gui = new appGUI(); 
     gui.setVisible(true); 

     String password = ""; //The password entered... 
     try { 
     MessageDigest md = MessageDigest.getInstance("MD5"); 
     md.update(password.getBytes()); 
     System.out.println(new BigInteger(1, md.digest()).toString(16)); 

     } catch(NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 

    } 

    } 

И это класс appGUI:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
/* 
* Created by JFormDesigner on Wed Apr 03 19:24:35 BST 2013 
*/ 



/** 
* @author Hrach Ghapantsyan 
*/ 
public class appGUI extends JFrame { 
    public appGUI() { 
     initComponents(); 
    } 

    private void loginButtonActionPerformed(ActionEvent e) { 
     // TODO add your code here 
    } 

    private void initComponents() { 
     // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents 
     // Generated using JFormDesigner Evaluation license - Hrach Ghapantsyan 
     loginPasswordField = new JPasswordField(); 
     loginUsernameField = new JTextField(); 
     usernameLabel = new JLabel(); 
     passwordLabel = new JLabel(); 
     loginButton = new JButton(); 
     titleLabel = new JLabel(); 

     //======== this ======== 
     setTitle("Experimental X | Administrator Login"); 
     Container contentPane = getContentPane(); 
     contentPane.setLayout(null); 
     contentPane.add(loginPasswordField); 
     loginPasswordField.setBounds(80, 65, 100, loginPasswordField.getPreferredSize().height); 
     contentPane.add(loginUsernameField); 
     loginUsernameField.setBounds(80, 35, 100, loginUsernameField.getPreferredSize().height); 

     //---- usernameLabel ---- 
     usernameLabel.setText("Username:"); 
     contentPane.add(usernameLabel); 
     usernameLabel.setBounds(20, 40, 55, usernameLabel.getPreferredSize().height); 

     //---- passwordLabel ---- 
     passwordLabel.setText("Password:"); 
     contentPane.add(passwordLabel); 
     passwordLabel.setBounds(20, 70, 55, passwordLabel.getPreferredSize().height); 

     //---- loginButton ---- 
     loginButton.setText("Login"); 
     loginButton.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       loginButtonActionPerformed(e); 
      } 
     }); 
     contentPane.add(loginButton); 
     loginButton.setBounds(80, 95, 100, loginButton.getPreferredSize().height); 

     //---- titleLabel ---- 
     titleLabel.setText("Experimental X | Administrator Login"); 
     contentPane.add(titleLabel); 
     titleLabel.setBounds(45, 10, 190, titleLabel.getPreferredSize().height); 

     { // compute preferred size 
      Dimension preferredSize = new Dimension(); 
      for(int i = 0; i < contentPane.getComponentCount(); i++) { 
       Rectangle bounds = contentPane.getComponent(i).getBounds(); 
       preferredSize.width = Math.max(bounds.x + bounds.width, ``preferredSize.width); 
       preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height); 
      } 
      Insets insets = contentPane.getInsets(); 
      preferredSize.width += insets.right; 
      preferredSize.height += insets.bottom; 
      contentPane.setMinimumSize(preferredSize); 
      contentPane.setPreferredSize(preferredSize); 
     } 
     setSize(270, 170); 
     setLocationRelativeTo(getOwner()); 
     // JFormDesigner - End of component initialization //GEN-END:initComponents 
    } 

    // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables 
    // Generated using JFormDesigner Evaluation license - Hrach Ghapantsyan 
    private JPasswordField loginPasswordField; 
    private JTextField loginUsernameField; 
    private JLabel usernameLabel; 
    private JLabel passwordLabel; 
    private JButton loginButton; 
    private JLabel titleLabel; 
    // JFormDesigner - End of variables declaration //GEN-END:variables 
} 

Когда я запускаю код Java, класс appGUI активируется, который вызывает всплывающее окно. Появится окно входа в систему. Когда появится окно входа в систему, пользователь должен ввести свое имя пользователя и пароль.

То, что я хотел случиться, когда пользователь нажимает на входе, он отправляет пароль к главному классу и делает что-то вроде этого:

String password = "the password that the user just inputed"; 

В:

public static void main(String[] args) throws Exception {} 

Есть ли любой способ сделать это?

+0

Почему вы хотите снова вызвать main(), а не другой метод? –

+0

Мне жаль, я не понял. Какая разница? –

+0

static void main() - это точка входа приложения java, у него не должно быть много кода, кроме инициализации вашего приложения. –

ответ

-1

При создании строки пароля вам нужно добавить var, чтобы впоследствии определить, что строка = указанная var. EX.

String password = new String("Somthing"); 

затем

appGUI gui = new appGUI(); 

if(gui.actionPerformed(loginPasswordField2).equals(password){ 

} 

Добавим, что к главному классу, то добавить к вашей actionlister

String loginPasswordFeild2 = new String(loginPasswordFild2) 

вы должны определить пароль beforhand, но он все равно будет работать.

+0

Спасибо за ответ. –

+0

'new String (« Пароль вы хотите »);' - для чего это нужно? просто напишите '' Пароль, который вы хотите ''. – gaborsch

+0

Это объявить строковую переменную и установить ее на требуемый пароль. – fftk4323

1

Один из способов сделать это будет:

  1. Сделайте свой appGUI внутренний класс «Main» класса (Пожалуйста, дайте лучшее название, позволяет назвать его Проверь сейчас.)

  2. Объявить свой пароль в качестве переменной экземпляра в классе «Test»

  3. Создать экземпляр Inner class

    Test q1=new Test() 
    appGUI gui = q1.new appGUI(); 
    
  4. В вашем loginButtonActionPerformed методе

     private void loginButtonActionPerformed(ActionEvent e) { 
          // TODO add your code here 
          password=loginPasswordField.getText(); 
         } 
    
  5. Это не будет полностью решить вашу проблему. Вызов внутреннего класса может быть выполнен в отдельном потоке, так что вы «Test» класса/основной поток ожидает до вашего пользователя завершает представление, то вы можете сделать свой пост синтаксическим с MessageDigest

Надеется, что это помогает !

0

В вашем классе Main создайте переменную PRIVATE String для пароля. Вы можете просто взять свой существующий String password и перенести его в класс.

Затем создайте метод PUBLIC SetPassword, чтобы присвоить значение этой строке, также в классе Main.

В вашем классе appGUI в методе, который выполняет действие, как только пользователь нажал кнопку «Войти», вызовите этот метод GetPassword и передайте ему строку пароля из графического интерфейса.

Надеюсь, что вышеизложенное должно содержать достаточное количество подсказок без того, чтобы я не писал для вас фактический код.

Смежные вопросы