Am modificat codul.
Membrul boolean roSele din clasa Banco va fi setat pe true in momentul in care se da click pe butonul ro.
Butonul ro are atasat listener-ul rom. In momenul cand se da click pe butonul ro, se apeleaza metoda actionPerformed() a listenerul-ui rom.
Codul modificat este:
rom = new ActionListener(){
public void actionPerformed(ActionEvent ae){
panou2.setVisible(false);
panou3.setVisible(true);
roSele = true;
JOptionPane.showMessageDialog(fer,"Selectat limba romana","Selectie limba",JOptionPane.INFORMATION_MESSAGE);
// panou4.setVisible(true);
}
};
Am adaugat:
roSele = true;
si un mesaj care anunta ca s-a trecut la limba romana.
Similar, in metoda actionPerformed() a listenerului eng (apelat cand dau click pe butonul engl), se seteaza membrul roSele la false si se da un mesaj ca s-a trecut la limba engleza.
Codul este:
eng = new ActionListener(){
public void actionPerformed(ActionEvent ae){
panou2.setVisible(false);
panou3.setVisible(true);
roSele = false;
JOptionPane.showMessageDialog(fer,"Selectat limba engleza","Selectie limba",JOptionPane.INFORMATION_MESSAGE);
// panou4.setVisible(true);
}
};
Am adaugat in clasa Banco un nou membru, de tip int, numit pinIndex, care va tine index-ul pinului daca sa introdus o parola corecta.
pinIndex e initializat la valoarea -1 si ramane la aceasta valoare daca parola nu e corecta.
pinIndex va fi setat in metoda actionPerformed() a listener-ului okbut, apelata cand se da click pe butonul okButton.
Noua implementare a listener-ului este (modificari in bold):
okbut = new ActionListener(){
......
for(int i = 0; i < possiblePasswords.length; i++)
if(Arrays.equals(possiblePasswords, input)) {
result = true;
pinIndex = i;
JOptionPane.showMessageDialog(fer,"Selectat pin " + i,"Parola corecta",JOptionPane.INFORMATION_MESSAGE);
break;
}
.....
}
Codul complet al clasei Banco e mai jos. Celelalte fisiere, in afara de Banco.java nu au fost modificate.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
public class Banco extends JFrame implements Mesaje{
private Component panou1,panou2,panou3,panou4,panou5;
private ActionListener cgres ,ccor;
private ActionListener rom,eng ;
private ActionListener alHelp;
private ActionListener alClose;
private ActionListener alAbout , okbut , cons;
private JPasswordField cPIN;
private static Banco fer ;
private JPanel panouaux ;
public boolean roSele;
private int pinIndex = -1;
public Banco() {
super("Bancomat");
setSize(1024, 725);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Container cp=getContentPane();
createListeners();
createMenu();
panou1=createComp();
cp.add(panou1, BorderLayout.SOUTH);
panou3=verifPIN();
cp.add(panou3,BorderLayout.CENTER);
panou3.setVisible(false);
panou4= alegeOp();
cp.add(panou4,BorderLayout.EAST);
panou4.setVisible(false);
panou2=selectLang();
// panou5=primfc();
panou2.setVisible(false);
// panou5.setVisible(true);
cp.add(panou2,BorderLayout.WEST) ;
setLookFeel();
setVisible(true);
}
private void setLookFeel(){
try {
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {System.out.println("Look & Feel error"); }
}
public void createListeners(){
alClose = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setVisible(false);
dispose();
System.exit(0);
}
};
alHelp = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(fer,"Apasati Butoanele Azi !","Ce help ma ?",JOptionPane.INFORMATION_MESSAGE);
}
};
alAbout = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(fer,"Enciu Adrian ; Talpau Mihaela ; Gheorghe Ionel","Autori",JOptionPane.INFORMATION_MESSAGE);
}
};
cgres = new ActionListener(){
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(fer,"Card neacceptat (Card not accepted)","Error",JOptionPane.INFORMATION_MESSAGE);
}
};
ccor = new ActionListener(){
public void actionPerformed(ActionEvent ae) {
panou1.setVisible(false) ;
panou2.setVisible(true);
}
};
rom = new ActionListener(){
public void actionPerformed(ActionEvent ae){
panou2.setVisible(false);
panou3.setVisible(true);
roSele = true;
JOptionPane.showMessageDialog(fer,"Selectat limba romana","Selectie limba",JOptionPane.INFORMATION_MESSAGE);
// panou4.setVisible(true);
}
};
eng = new ActionListener(){
public void actionPerformed(ActionEvent ae){
panou2.setVisible(false);
panou3.setVisible(true);
roSele = false;
JOptionPane.showMessageDialog(fer,"Selectat limba engleza","Selectie limba",JOptionPane.INFORMATION_MESSAGE);
// panou4.setVisible(true);
}
};
okbut = new ActionListener(){
public void actionPerformed(ActionEvent ae){
char[][] possiblePasswords = new char[][] {
pin[0].toCharArray(),
pin[1].toCharArray(),
pin[2].toCharArray(),
pin[3].toCharArray(),
pin[4].toCharArray(),
pin[5].toCharArray(),
pin[6].toCharArray(),
pin[7].toCharArray(),
pin[8].toCharArray(),
pin[9].toCharArray(),
pin[10].toCharArray(),
pin[11].toCharArray()
};
char[] p1=cPIN.getPassword();
char[] input = p1;
boolean result = false;
for(int i = 0; i < possiblePasswords.length; i++)
if(Arrays.equals(possiblePasswords, input)) {
result = true;
pinIndex = i;
JOptionPane.showMessageDialog(fer,"Selectat pin " + i,"Parola corecta",JOptionPane.INFORMATION_MESSAGE);
break;
}
if(result)
JOptionPane.showMessageDialog(fer,"pin misto",
"Succes",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(fer,"pin naspa",
"bad luck",JOptionPane.INFORMATION_MESSAGE);
panou3.setVisible(false);
panou4.setVisible(true);
}
};
cons = new ActionListener(){
public void actionPerformed(ActionEvent ae){
panou4.setVisible(false);
}
};
};
public void createMenu() {
JMenuBar menuBar = new JMenuBar(); //bara de meniu
JMenu menuFile = new JMenu("File"); //meniul File
menuFile.setMnemonic(java.awt.event.KeyEvent.VK_F);
JMenu menuHelp = new JMenu("Help"); //meniul Help
menuHelp.setMnemonic(java.awt.event.KeyEvent.VK_E);
//itemi in meniul File
JMenuItem itemClose = new JMenuItem("Close");
//seteaza o combinatie de taste pentru activarea item-ului fara a intra in meniu
itemClose.addActionListener(alClose);
//itemi in meniul Help
JMenuItem helpItem = new JMenuItem("Help");
JMenuItem aboutItem = new JMenuItem("About");
helpItem.setMnemonic(java.awt.event.KeyEvent.VK_H);
aboutItem.setMnemonic(java.awt.event.KeyEvent.VK_A);
menuHelp.add(helpItem);
menuHelp.add(aboutItem);
helpItem.setAccelerator(KeyStroke.getKeyStroke('H', Event.CTRL_MASK, false));
helpItem.addActionListener(alHelp);
aboutItem.addActionListener(alAbout);
itemClose.setMnemonic(java.awt.event.KeyEvent.VK_C);
itemClose.setAccelerator(KeyStroke.getKeyStroke('C',Event.CTRL_MASK, false));
menuFile.add(itemClose);
itemClose.addActionListener(alClose);
menuBar.add(menuFile);
menuBar.add(menuHelp);
this.setJMenuBar(menuBar);
}
public Component createComp(){
Box b1=Box.createHorizontalBox();
JPanel panoul = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JPanel cardAcc= new JPanel(new FlowLayout()) ;
cardAcc.add(new JLabel("Tipuri de card acceptate : "));
cardAcc.add(new JLabel("Visa , Mastercard , Maestro "));
panoul.add(cardAcc);
JButton but1=new JButton("Visa");
but1.addActionListener(ccor);
b1.add(but1);
b1.add(Box.createHorizontalStrut(10));
JButton but2=new JButton("Mastercard");
but2.addActionListener(ccor);
b1.add(but2) ;
b1.add(Box.createHorizontalStrut(10));
JButton but3=new JButton("Maestro");
but3.addActionListener(ccor);
b1.add(but3);
b1.add(Box.createHorizontalStrut(10));
JButton but4=new JButton("American");
but4.addActionListener(cgres);
b1.add(but4);
b1.add(Box.createHorizontalStrut(10));
panoul.add(b1);
return panoul ;
}
public Component selectLang(){
Box b2=Box.createVerticalBox();
b2.add(Box.createVerticalStrut(300));
JButton ro=new JButton("-> Romana ");
ro.addActionListener(rom);
b2.add(ro);
b2.add(Box.createVerticalStrut(20));
JButton engl=new JButton("-> English ");
engl.addActionListener(eng);
b2.add(engl);
b2.add(Box.createVerticalStrut(300));
return b2 ;
}
public Component verifPIN(){
Box b3=Box.createVerticalBox();
b3.add(Box.createHorizontalStrut(280));
b3.add(Box.createVerticalStrut(300));
panouaux=new JPanel() ;
panouaux.add(new JLabel(" PIN "));
cPIN= new JPasswordField(4);
panouaux.add(cPIN);
JButton okButton = new JButton("OK");
okButton.addActionListener(okbut);
panouaux.add(okButton);
b3.add(panouaux);
b3.add(Box.createVerticalStrut(300));
return b3 ;
}
public Component alegeOp(){
Box b4=Box.createVerticalBox();
b4.add(Box.createVerticalStrut(278));
if(roSele){
JButton consult=new JButton(mesRo[1]);
b4.add(consult);
consult.addActionListener(cons);}
else {
JButton consult=new JButton(mesEn[1]);
b4.add(consult);
consult.addActionListener(cons);
}
b4.add(Box.createVerticalStrut(30));
if(roSele){
JButton retrag=new JButton(mesRo[2]);
b4.add(retrag);}
else {
JButton retrag=new JButton(mesEn[2]);
b4.add(retrag);
}
b4.add(Box.createVerticalStrut(30));
if(roSele){
JButton plati=new JButton(mesRo[3]);
b4.add(plati);}
else {
JButton plati=new JButton(mesEn[3]);
b4.add(plati);
}
b4.add(Box.createVerticalStrut(200));
return b4 ;
}
/* public Component primfc(){
Box b5=Box.createVerticalBox();
JButton ro=new JButton("-> Romdsaassadsada ");
// b5.add(ro);
b5.add(Box.createVerticalStrut(10));
JButton engl=new JButton("-> Enasdasdasdasish ");
// b5.add(engl);
return b5 ;
} */
public static void main(String args[]){
fer=new Banco();
}
}