0

JPasswordField を使用して、ログイン機能用のユーザー名とパスワードを取得しています。.getPassword はパスワードには機能しますが、ユーザー名には機能しません。まったく同じことを入力した場合、ユーザー名に対して機能しない理由はありますか?

これが私のコードです:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;

class pros
{
    JFrame frame;
    private static void show(){
    JFrame frame = new JFrame("LOGIN");
    frame.setSize(450,450);
    frame.setLayout(new GridLayout(0,1));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel(); 
    panel.setBackground(Color.BLACK);

    JLabel username = new JLabel("Enter the Username: ",JLabel.LEFT);
    username.setForeground(Color.WHITE);
    username.setFont(username.getFont().deriveFont(24f));
    panel.add(username);

    JPasswordField user = new JPasswordField(10);
    user.setEchoChar('?');
    panel.add(user);

    JLabel password = new JLabel("Enter your Password: ",JLabel.RIGHT);
    password.setForeground(Color.WHITE);
    password.setFont(password.getFont().deriveFont(24f));
    panel.add(user);
    panel.add(password);

    JPasswordField field = new JPasswordField(10);
    field.setEchoChar('•');

    JButton ok = new JButton("OK");
    ok.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) 
        {
            String input = String.valueOf(field.getPassword());
            String user = String.valueOf(user.getPassword());
            if(input.equals("double" && user.equals("relocating")))
            {
                field.setText("");
               pane();
        }
    }});
    panel.add(field);
    panel.add(ok);
    frame.add(panel);
    frame.setVisible(true);
}
4

2 に答える 2

0

if ステートメントの前に System.out.println(input+" "+user) を使用して、変数の値を確認すると、問題がわかり、修正できます。

{
        String input = String.valueOf(field.getPassword());
        String user = String.valueOf(user.getPassword());
        System.out.println(input+"  "+user);//here print see the consul to know why it's not working
        if(input.equals("double" && user.equals("relocating")))
        {
            field.setText("");
           pane();
    }

または、文字列とフィールドに同じ名前を使用している可能性があります

于 2016-07-13T11:24:18.587 に答える
0

あなたのコードにはいくつかの間違いがあります。まず、親パネルに 'user' JPasswordField を 2 回追加します。初めてここで行われます:

JPasswordField user = new JPasswordField(10);
user.setEchoChar('?');
panel.add(user);

コンポーネントとここで 1 つを初期化した後:

JLabel password = new JLabel("Enter your Password: ",JLabel.RIGHT);
password.setForeground(Color.WHITE);
password.setFont(password.getFont().deriveFont(24f));
panel.add(user);
panel.add(password);

第二に、ボタンの初期化後に(リスナーとともに)コンポーネントをパネルの「フィールド」に追加する理由。

第三に、ユーザー名の長さはどれくらいですか? サイズが制限されているため、10文字を超える場合は機能しません。

于 2016-07-13T11:31:09.403 に答える