2013-09-26 143 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