Wątek przeniesiony 2015-06-30 08:51 z Java przez bogdans.

Ekran logowania Java

0

Witam,
przede wszystkim chciałbym się przywitać ze wszystkimi na forum, ponieważ jest to mój pierwszy post. Zabrałem się za pisanie własnej aplikacji i natrafiłem na problem. Jestem na etapie tworzenia ekranu logowania, chciałbym, aby przy wpisaniu danych admin/admin wyświetlały się komunikaty. Cały kod działa, nie wiem jedynie jak odwołać się do loginu i hasła tak, aby sprawdzana była ich poprawność. Oczywiście wiem, że wyświetlanie komunikatów jest źle napisane, ale tak jak wspominałem wcześniej, zależy mi tylko na funkcji sprawdzającej login i hasło , z całą resztą sobie poradzę . Proszę was o pomoc, poniżej podaję kod.

package aplikacja;


import java.awt.*;
import java.awt.event.*;

import javax.swing.*;



@SuppressWarnings("serial")
public class Logowanie extends JFrame {
    
   public Logowanie() {

        setTitle("MyStats - Ekran logowania");
        setSize(400,300);
        setResizable(false);
        setLocationRelativeTo(null);
        initComponents();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
  }


           JPanel panel = new JPanel();
   
 

           
    public void initComponents()
    {
        
          JButton  PrzyciskZamknij = new JButton ("Zamknij");
          JButton  PrzyciskOK = new JButton ("OK");
          JLabel  Login= new JLabel("Login: ");
          JLabel  Haslo = new JLabel("Hasło: ");
          JTextField LoginUzytkownika = new JTextField(6);
          JPasswordField HasloUzytkownika = new JPasswordField(6);
          PrzyciskZamknij.setSize(90, 30);
          PrzyciskOK.setSize(90, 30);
          Login.setSize(100,30);
          Haslo.setSize(100,30);
          LoginUzytkownika.setSize(100,30);
          HasloUzytkownika.setSize(100,30);
          PrzyciskZamknij.setLocation(getWidth()-190,getHeight()-100);
          PrzyciskOK.setLocation(getWidth()-310,getHeight()-100);
          Login.setLocation(getWidth()-300,getHeight()-220);
          Haslo.setLocation(getWidth()-300,getHeight()-180);
          LoginUzytkownika.setLocation(getWidth()-250,getHeight()-220);
          HasloUzytkownika.setLocation(getWidth()-250,getHeight()-180);
          panel.setLayout(null);
          panel.add(PrzyciskZamknij);
          panel.add(PrzyciskOK);
          panel.add(Login);
          panel.add(Haslo);
          panel.add(LoginUzytkownika);
          panel.add(HasloUzytkownika);
          PrzyciskZamknij.setToolTipText("Zamknij Program.");
          PrzyciskOK.setToolTipText("Zaloguj się.");
          LoginUzytkownika.setToolTipText("Podaj swój login.");
          HasloUzytkownika.setToolTipText("Podaj swoje hasło.");
          this.getContentPane().add(panel);
          PrzyciskZamknij.addActionListener(new ButtonZamknij());
          PrzyciskOK.addActionListener(new ButtonOK());
         
    }
    
     //akcja przy przycisku zamknij   
    private class ButtonZamknij implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            System.exit(0);
        }
    }
    
    //akcja przy przycisku ok
    private class ButtonOK implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {

            String user = LoginUzytkownika.getText();
            String pass = HasloUzytkownika.getText();
            if(user.equals("admin") && pass.equals("admin")) {
                System.out.print("zalogowano");
            }
            else {
                System.out.print("blad");
            }
           
        }
    }
    
    
    public static void main(String[] args) {
              
       EventQueue.invokeLater(new Runnable() {
         public void run() {
             Logowanie EkranLogowania = new Logowanie();
            EkranLogowania.setVisible(true);
            Toolkit t = Toolkit.getDefaultToolkit();
            Dimension d = t.getScreenSize();
            EkranLogowania.setLocation((d.width/4), (d.height/4));
            
            // EkranLogowania.setBounds(d.width/4, d.height/4,500 ,300);
         } 
        });
    }
}
0

podepnij documentListenera pod textFielda i waliduj wpisany text. Jak przechodzi walidację to nic nie wyświetlaj a jak nie przechodzi to np. wyświetl jakiś komunikat w labelce
https://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html

1

Kod nie dział bo zmienne LoginUzytkownika i HasloUzytkownia są zmiennymi lokalnym czyli są niewidoczne poza tą metodą, w której są użyte. Sposobem rozwiązania może być użycie klasy anonimowej, zamień to:

PrzyciskOK.addActionListener(new ButtonOK());

na to:

         PrzyciskOK.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				String user = LoginUzytkownika.getText();
	            String pass = HasloUzytkownika.getText();
	            if(user.equals("admin") && pass.equals("admin")) {
	                System.out.print("zalogowano");
	            }
	            else {
	                System.out.print("blad");
	            }
				
			}
        	  
          });

Nie jest to idealne ale działa. Możesz też wyodrębnić te zmienne jako składowe klasy, wtedy z dostępem nie będzie problemu

0

Dziękuję bardzo za pomoc.

0 użytkowników online, w tym zalogowanych: 0, gości: 0