import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* JFrame ActionListener interfész
* (--> public void actionPerformed() {.....} ).
*/
public class Users extends JFrame implements ActionListener {
/**
* Ez egy osztály a felhasználóknak. 2 attribútuma van: a név és a jelszó.
* Ezekhez megírtam a megfelelő get/set metódusokat, a konstruktorban meg
* kell adni ezt a két adatot. Irtam egy elszóváltoztató metódust is, hogy
* ne legyen olyan ronda a kód odalent.
*/
class User {
private String name;
private String pwd;
public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public String getPwd() {
return pwd;
}
/**
* Itt ellenőrzöm azt is, hogy a régi pwd jó-e, azaz szabad-e a
* jelszót megváltoztatni.
*/
public void setNewPwd(String oldPwd, String newPwd) {
if (oldPwd.equals(pwd) ) {
pwd = newPwd;
JOptionPane.showMessageDialog( // Ezekkel tudok figyelmeztető ablakot
null, // "fellőni".
"A jelszó megváltozott!",
"Figyelem:",
JOptionPane.ERROR_MESSAGE
);
} else {
JOptionPane.showMessageDialog(
null,
"A jelszó nem helyes!",
"Figyelem:",
JOptionPane.ERROR_MESSAGE
);
}
}// setNewPwd
/**
* Csak a debugginghoz, a kilépéskor kiírja az összes usert.
*/
public String toString() {
return "Név: " + name + '\t' + "Jelszó: " + pwd;
}
}// User
/**
* Hogy ne kelljen a java.util csomagot használni --- MAX 10 EMBER LEHET !!!
* Megjegyzem, hogy nincs ellátva megfelelő ellenőrzésekkel.
*/
User[] users = new User[10];
/* A konstruktor --- hogy kikerüljem a sok static változót */
public Users() {
for (int i=0; i<users.length; i++) { // kinyomom az egész tömböt nullra
users[i] = null; // Ez amúgy default, de biztos, ami
} // biztos...
getContentPane().add(mainPanel); // 7 sorba benyomom az összes GUI alkatrészt
mainPanel.setLayout(new GridLayout(7,0) );
mainPanel.add(nameTextField);
mainPanel.add(pwdTextField);
mainPanel.add(newPwdTextField);
mainPanel.add(newButton);
mainPanel.add(changePwdButton);
mainPanel.add(deleteButton);
mainPanel.add(exitButton);
pack(); // beállítja az ideális méretet
newButton.addActionListener(this); //a gombokra felakasztom ezt a figyelőt.
changePwdButton.addActionListener(this);
deleteButton.addActionListener(this);
exitButton.addActionListener(this);
// Ha bezárjuk az ablakot, akkor kilépünk.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
/**
* MINDEN java progiban ez a fő metódus (kivéve persze az appleteket).
*/
public static void main(String args[]) {
new Users().show();
}
/**
* A TextAreák takarítása.
*/
private void reset() {
nameTextField.setText("");
pwdTextField.setText("");
newPwdTextField.setText("");
}
/**
* Az eseménykezelés az alapján, hogy mely gombból generálódott az esemény.
* Randa, de ez a legegyszerűbb megoldás.
*/
public void actionPerformed(ActionEvent ae) {
if (newButton == ae.getSource() ) {
String name = nameTextField.getText();
String pwd = pwdTextField.getText();
for (int i=0; i<users.length; i++) {
if (null == users[i]) {
users[i] = new User(name, pwd); // Amint üres helyet találunk, kilépünk
break; // a ciklusból.
}
}
JOptionPane.showMessageDialog( // A szokásos figyelmeztetés
null,
"Új felhasználó létrehozva!",
"Figyelem:",
JOptionPane.ERROR_MESSAGE
);
reset(); // Törlés.
} else if (changePwdButton == ae.getSource() ) {
String name = nameTextField.getText();
String oldPwd = pwdTextField.getText();
String newPwd = newPwdTextField.getText();
for (int i=0; i<users.length; i++) {
if (users[i].getName().equals(name) ) {
users[i].setNewPwd(oldPwd, newPwd); // Pwd változtatása, ld. a classnál
return;
}
}
reset();
} else if (deleteButton == ae.getSource() ) {// Ehez kell a pwd is!!!
String name = nameTextField.getText();
String pwd = pwdTextField.getText();
for (int i=0; i<users.length; i++) { // az emberke keresése
if (users[i].getName().equals(name) ) { // ha megvan...
if (users[i].getPwd().equals(pwd) ) { // akkor ellenőrizzük a pwd
users[i] = null; // helyességét is
JOptionPane.showMessageDialog(
null,
"Felhasználó törölve!",
"Figyelem:",
JOptionPane.ERROR_MESSAGE
);
} else {
JOptionPane.showMessageDialog(
null,
"Nem megfelelő a jelszó!",
"Figyelem:",
JOptionPane.ERROR_MESSAGE
);
}
return;
}
}
reset();
} else if (exitButton == ae.getSource() ) {
for (int i=0; i<users.length; i++) {
System.out.println(users[i]); // Kilépéskor kiírjuk az összes nevet, pwd-t.
}
System.exit(0);
}
}
/**
* A GUI komponensei
* Remélem áttekinthető lett, nem akartam JPasswordFieldet használni, mert akkor
* oda kellett volna rakni egy JLabelt is melléjük, akkor ezeket már külön JPanelre,
* aminek a Layoutját be kellett volna lőni mondjuk BorderLayoutra, ami viszont már
* egy "csöppet" bonyolultabb, mint egy GridLayout...
*/
JPanel mainPanel = new JPanel();
JTextField nameTextField = new JTextField("Név");
JTextField pwdTextField = new JTextField("Jelszó");
JTextField newPwdTextField = new JTextField("Új jelszó");
JButton newButton = new JButton("Új felhasználó");
JButton changePwdButton = new JButton("Jelszó megváltoztatása");
JButton deleteButton = new JButton("Felhasználó törlése");
JButton exitButton = new JButton("Kilépés");
}
// Egyelőre ennyi. :-). Commentek nélkül kb. 100 sor.
Nincsenek megjegyzések:
Megjegyzés küldése