我有一个Java程序,它有两个类,Main类和appGUI
类。
这是Main类:
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类被激活,导致弹出窗口。弹出一个登录框。当弹出登录框时,用户需要输入他或她的用户名和密码。
我想要发生的是当用户点击登录时,它会将密码提交给Main类并执行以下操作:
String password = "the password that the user just inputed";
在:
public static void main(String[] args) throws Exception {}
有没有办法做到这一点?
答案 0 :(得分:1)
一种方法是:
让你的appGUI成为'Main'类的内部类(请给出一个更好的名字,我们现在称之为Test。)
在“测试”类
Test q1=new Test()
appGUI gui = q1.new appGUI();
在您的loginButtonActionPerformed方法
中 private void loginButtonActionPerformed(ActionEvent e) {
// TODO add your code here
password=loginPasswordField.getText();
}
这不能完全解决您的问题。对内部类的调用可以在一个单独的线程中进行,这样你'Test'类/主线程等待你的用户完成提交,然后你可以使用MessageDigest进行帖子解析
希望这有帮助!
答案 1 :(得分:0)
在Main
班级中为密码创建PRIVATE String
变量。您可以简单地使用现有的String password
并将其移至课程本身。
然后创建PUBLIC SetPassword
方法为该字符串赋值,同样在Main
类中。
在用户单击“登录”按钮后执行操作的方法的appGUI
类中调用此GetPassword
方法并从GUI传递密码字符串。
我希望上面提供足够的提示,而不是为你编写实际的代码。
答案 2 :(得分:-1)
当您输入密码字符串时,需要为其添加一个var,以便稍后可以定义string = said var。 EX。
String password = new String("Somthing");
然后
appGUI gui = new appGUI();
if(gui.actionPerformed(loginPasswordField2).equals(password){
}
然后将其添加到您的主类 将此添加到您的actionlister
String loginPasswordFeild2 = new String(loginPasswordFild2)
你必须定义密码,但它仍然有用。