2013-09-26 74 views
0

我一晚做了一些编程,遇到了一个问题。看起来我的按钮的动作侦听器中的if语句没有被拾取。我很少新编程,所以我希望这不是太明显有什么建议吗?下面的代码:简单密码程序的麻烦--Java

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.*; 
import java.util.*; 
import javax.swing.*; 

public class Login extends JFrame implements ActionListener { 
JTextField tfUsername, tfPassword; 
JLabel jlUser, jlPass; 
JTextArea tarea; 
JButton bLogin; 

public Login(){ 
    JFrame frame = new JFrame("Login Test"); 
    JPanel panel = new JPanel(); 
    jlUser = new JLabel("Username"); 
    tfUsername = new JTextField(20); 
    jlPass = new JLabel("Password"); 
    tfPassword = new JTextField(20); 
    bLogin = new JButton("Login"); 
    tarea = new JTextArea(); 

    frame.setSize(335,150); 
    frame.add(panel); 
    panel.add(jlUser); 
    panel.add(tfUsername); 
    panel.add(jlPass); 
    panel.add(tfPassword); 
    panel.add(bLogin); 
    panel.add(tarea); 
    bLogin.addActionListener(this); 
    frame.setResizable(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 


public static void main(String[] args) { 
new Login(); 

} 


@Override 
public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 
    if(e.getSource() == bLogin){ 
     String user = tfUsername.getText(); 
     String pass = tfPassword.getText(); 
     String be = "hi"; 

        if(pass == be){ 
      tarea.setText("Successful"); 
     } 
} 

} 

回答

6

的问题是你如何比较passbeString小号

if (pass == be) { 
    tarea.setText("Successful"); 
} 

这是比较对象引用,而不是他们的内容,这将永远是假的.. 。相反,你应该使用.equals

if (pass.equals(be)) { 
    tarea.setText("Successful"); 
} 

这将做一个区分大小写的比较。如果需要,您还可以使用.equalsIgnoreCase在不区分大小写

对于密码,你应该使用JPasswordField并在char阵列中存储的密码,如String值更容易挑选出的内存。

这则需要您使用Arrays.equals(char\[\], char\[\])代替

How to use Password Fields了解更多详情...

1

到目前为止,我所看到的是字符串比较错误。发布错误日志以查看是否有其他错误。 在字符串匹配尝试

if (pass.equals(be)) { 
    tarea.setText("Successful"); 
} 

您还可以使用的compareTo功能以及查询字符串

另外的gettext的通也不是很固定

+0

哇,你花了3分钟,拿出我也做了同样的回答... – MadProgrammer

+0

你快,恭喜 – LynAs

+0

对不起,我很早就睡了,所以我有点愤世嫉俗。我当然不反对扩大答案或提供更多观点的人们,但当人们用相同的答案填充问题时确实会令人讨厌 - 恕我直言:P – MadProgrammer