2016-08-10 9 views
0

私はJavaを初めて使用しています。後でログインに使用する登録プログラムを作成したいと思います。ユーザー名(KorisnickoIme)、パスワード(Lozinka)、パスワードの繰り返し(PLozinka)を入力させたい。 LozinkPLozinkaを比較してください。すべてが良い場合は、KorisnickoImeというハッシュマップに値としてLozinkaを追加します。HashMapsで登録Java Swing

問題は、lozinkaを印刷すると何も得られないということです。つまり、ハッシュマップでは何も得られていません。後でログイン用に使用することはできません。

public class RegistrujSeProzor { 
    static HashMap<String, Object> korisnici = new HashMap<>(); 

    static String KorisnickoIme = ""; 
    static String Lozinka = ""; 
    static String PLozinka = ""; 

    static void prozor() { 
     JFrame prozor = new JFrame(); 
     prozor.setLayout(null); 
     prozor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     prozor.setIconImage(new ImageIcon("res/purple.png").getImage()); 
     prozor.setVisible(true); 
     prozor.setSize(400, 300); 
     prozor.setLocationRelativeTo(null); 
     prozor.setResizable(false); 

     Container contentPane = prozor.getContentPane(); 

     JLabel label1 = new JLabel("Novo Korisnicko Ime : "); 
     JLabel label2 = new JLabel("Nova Lozinka : "); 
     JLabel label3 = new JLabel("Ponovte Lozinku : "); 

     label1.setBounds(10, 20, 200, 30); 
     label2.setBounds(10, 50, 200, 30); 
     label3.setBounds(10, 80, 200, 30); 

     contentPane.add(label1); 
     contentPane.add(label2); 
     contentPane.add(label3); 

     JTextField textField = new JTextField(20); 
     contentPane.add(textField); 
     textField.setBounds(140, 26, 200, 20); 
     KorisnickoIme = textField.getText(); 

     JTextField textField2 = new JTextField(20); 
     contentPane.add(textField2); 
     textField2.setBounds(140, 57, 200, 20); 
     Lozinka = textField2.getText(); 

     JTextField textField3 = new JTextField(20); 
     contentPane.add(textField3); 
     textField3.setBounds(140, 88, 200, 20); 
     PLozinka = textField3.getText(); 

     JButton dPotvrdi = new JButton("Potvrdi"); 
     dPotvrdi.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       if (Lozinka.equals(PLozinka)) { 
        korisnici.put(KorisnickoIme, Lozinka); 
        UlogujSeProzor.main(null); 
        prozor.dispose(); 
        System.out.println(Lozinka); 

       }else{ 
        JOptionPane.showMessageDialog(null,"Pogresno uneto Novo Korisnicko ime ili Lozinka ! " 
          + "Pokusajte ponovo ."); 
        RegistrujSeProzor.main(null); 
       } 
      } 
     }); 

     JButton dNazad = new JButton("Nazad"); 
     dNazad.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       LoginRegisterProzor.main(null); 
       prozor.dispose(); 
      } 
     }); 

     contentPane.add(dPotvrdi); 
     contentPane.add(dNazad); 

     dPotvrdi.setBounds(215, 215, 150, 30); 
     dNazad.setBounds(15, 215, 150, 30); 
    } 

    public static String getText() { 
     return KorisnickoIme; 
    } 

    public static void setText(String text) { 
     RegistrujSeProzor.KorisnickoIme = text; 
    } 

    public static String getText2() { 
     return Lozinka; 
    } 

    public static void setText2(String text2) { 
     RegistrujSeProzor.Lozinka = text2; 
    } 

    public static String getText3() { 
     return PLozinka; 
    } 

    public static void setText3(String text3) { 
     RegistrujSeProzor.PLozinka = text3; 
    } 

    public static void main(String[] args) { 
     prozor(); 
    } 
+2

1. JavaのGUIは異なるOS上で動作する必要がある」を、画面のサイズ、画面の解像度など、さまざまなロケールで異なるPLAFを使用します。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2.すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 .. –

+2

Javaスタイルのガイドについてお読みください。変数名は常に小文字で始まります。 CONSTANTSを除きます。それから私は示唆します: "静的"対 "非静的"メソッド/フィールドについて少しお読みください。あなたは静かにその場所全体を使用しています。それは単に良いアイデアではありません。第三:それをしないでください。あなたはsetText1、setText2などを行う複数の「もの」を持ってはいけません。それは単に非常に悪い習慣です。 **名前の後ろにあるものが何であるかを示す名前を使用する**。 – GhostCat

+2

.. 3)画像を取得する方法の1つは、[このQ&A](http://stackoverflow.com/q/19209650/418556)に表示されている画像にホットリンクすることです。 4)一般的なJava命名法(命名規則、例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'でない限り)を学び、それを一貫して使用してください。 –

答えて

0
Lozinka = textField2.getText(); 

あなたはそれが空のままだと、右にその作成後にテキストフィールドを読んでいます。あなたは、やるべきことは、あなたのActionListener内のactionPerformed方法、例えば:

button.addActionListener(e -> { 
    String password1 = passwordField.getText(); 
    String password2 = repeatPasswordField.getText(); 

    // compare 
}); 

または標準的な方法は、あなたがラムダ嫌い場合:

button.addActionListener(new ActionListener() { 
    @Override  
    public void actionPerformed(ActionEvent e) { 
     String password1 = passwordField.getText(); 
     String password2 = repeatPasswordField.getText(); 

     // compare  
    } 
}); 
+0

それは私の問題を実際に解決しました。誰かがこの人にクッキーを与える! –

関連する問題