CLASA PRODUS
===================================================
public class Produs implements [Link]{
public String serie;
public double pret;
public Produs(){
}
public Produs(String serie, double pret){
[Link]=serie;
[Link]=pret;
}
public String toString(){
return serie+" "+pret;
}
}
===========================================================
CLASA MAGAZIN
============================================================
import [Link].*;
public class Magazin implements ProdusSubject, [Link]{
private static Magazin singleton;
private ArrayList<Produs> produse = new ArrayList<>();
private ArrayList<ProdusListener> produsListeners = new ArrayList<>();
private Magazin(){}
public static Magazin getInstance(){
if(singleton == null){
singleton = new Magazin();
}
return singleton;
}
public static void setInstance(Magazin m){
[Link] = [Link];
[Link]();
}
public void addProdus(Produs p){
[Link](p);
notifyProdusListeners();
}
public void removeProdus(Produs p){
[Link](p);
notifyProdusListeners();
}
public ArrayList<Produs> getProduse(){
return produse;
}
public void addProdusListener(ProdusListener p){
[Link](p);
}
public void notifyProdusListeners(){
for(ProdusListener p: produsListeners){
[Link]();
}
}
}
==========================================================
CLASA PRODUS LISTENER
==========================================================
public interface ProdusListener extends [Link]{
public void listaProduseModificata();
}
==========================================================
CLASA PRODUS SUBJECT
==========================================================
public interface ProdusSubject{
public void addProdusListener(ProdusListener p);
public void notifyProdusListeners();
}
==========================================================
CLASA MAIN FRAME
==========================================================
import
import
import
import
import
[Link].*;
[Link].*;
[Link].*;
[Link].*;
[Link].*;
public class MainFrame extends JFrame{
private JMenuBar mb = new JMenuBar();
private JMenu m1 = new JMenu("Optiuni");
private JMenuItem mi1 = new JMenuItem("Adauga produs");
private JMenuItem mi2 = new JMenuItem("Save");
private JMenuItem mi3 = new JMenuItem("Open");
private JList<Produs> list = new JList<>();
private DefaultListModel<Produs> model = new DefaultListModel<>();
private JPanel p1 = new JPanel(new FlowLayout([Link]));
private JLabel e1 = new JLabel("NR: 0");
public MainFrame(){
super("Produse");
setJMenuBar(mb);
[Link](m1);
[Link](mi1);
[Link](mi2);
[Link](mi3);
[Link](
new ActionListener(){
public void actionPerformed(ActionEvent ev){
new AddProductFrame();
}
}
);
[Link](
new ActionListener(){
public void actionPerformed(ActionEvent ev){
JFileChooser chooser = new JFileChooser();
int r = [Link](null);
if(r == JFileChooser.APPROVE_OPTION){
File file = [Link]();
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(
new FileOutputStream(file)
);
[Link]([Link]());
}catch(Exception e){
// tratarea exceptiei
}finally{
try{
if(out!=null) [Link]();
}catch(Exception e){
// tratarea exceptiei
}
}
}
);
[Link](
new ActionListener(){
public void actionPerformed(ActionEvent ev){
JFileChooser chooser = new JFileChooser();
int r = [Link](null);
if(r == JFileChooser.APPROVE_OPTION){
File file = [Link]();
ObjectInputStream in = null;
try{
in = new ObjectInputStream(
new FileInputStream(file)
);
Magazin m = (Magazin) [Link]();
[Link](m);
}catch(Exception e){
// tratarea exceptiei
}finally{
try{
if(in!=null) [Link]();
}catch(Exception e){
// tratarea exceptiei
}
}
}
}
);
new Thread(){
public void run(){
while(true){
[Link]("NR: "+[Link]().getProduse().size());
try{
[Link](1000);
}catch(InterruptedException e){
}
}
}
}.start();
[Link]().addProdusListener(
new ProdusListener(){
public void listaProduseModificata(){
[Link]();
ArrayList<Produs> produse =
[Link]().getProduse();
for(Produs p: produse){
[Link](p);
}
}
}
);
[Link](
new MouseAdapter(){
public void mouseClicked(MouseEvent ev){
if([Link]() == 2){
Produs p = [Link]();
[Link]().removeProdus(p);
}
}
}
);
add(list);
[Link](model);
add(p1, [Link]);
[Link](e1);
setSize(500,500);
setLocationRelativeTo(null);
setVisible(true);
public static void main(String [] args){
new MainFrame();
}
}
==========================================================
CLASA ADD PRODUCT FRAME
==========================================================
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
public class AddProductFrame extends JFrame{
private JPanel p1 = new JPanel(new FlowLayout([Link]));
private JPanel p2 = new JPanel(new FlowLayout([Link]));
private JPanel p3 = new JPanel(new FlowLayout([Link]));
private JLabel e1 = new JLabel("SERIE:");
private JLabel e2 = new JLabel("PRET:");
private JTextField t1 = new JTextField(20);
private JTextField t2 = new JTextField(20);
private JButton b1 = new JButton("Adauga produs");
public AddProductFrame(){
super("Adaugare produs");
setLayout(new GridLayout(3,1));
add(p1);add(p2);add(p3);
}
}
[Link](e1);[Link](t1);
[Link](e2);[Link](t2);
[Link](b1);
[Link](
new ActionListener(){
public void actionPerformed(ActionEvent ev){
String serie = [Link]();
double pret = [Link]([Link]());
[Link]().addProdus(new Produs(serie,pret));
dispose();
}
}
);
pack();//RESTRANGE CONTROALELE PE FEREASTRA
setResizable(false);
setLocationRelativeTo(null);
setVisible(true);