Feratyusa

LayarManager

Nov 24th, 2020
576
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /**
  3.  * Mengatur Layar yang akan ditampilkan pada mesin ATM
  4.  *
  5.  * @author (Ega Prabu Pamungkas-05111940000014)
  6.  * @version (1.2)
  7.  */
  8. import java.awt.*;
  9. import java.awt.event.*;
  10. import javax.swing.*;
  11. import javax.swing.border.*;
  12.  
  13. public class LayarManager
  14. {
  15.     private JFrame frame;
  16.     private JPanel contentPane;
  17.     private ATMMachine atm;
  18.     private KartuDebit kartuPengguna;
  19.    
  20.     /**
  21.      * Constructor untuk LayarManager
  22.      */
  23.     public LayarManager()
  24.     {
  25.         makeFrame();
  26.     }
  27.    
  28.     /**
  29.      * Membuat frame baru untuk mesin ATM
  30.      */
  31.     private void makeFrame()
  32.     {
  33.         frame = new JFrame("Mesin ATM BCA");
  34.         contentPane = (JPanel) frame.getContentPane();
  35.         makeContentPane();
  36.         frame.setMinimumSize(new Dimension(720,480));
  37.        
  38.         viewLayarAwal();
  39.         frame.pack();
  40.         frame.setVisible(true);
  41.     }
  42.    
  43.     /**
  44.      * Membuat border dan layout dari konten di dalam frame
  45.      */
  46.     private void makeContentPane()
  47.     {
  48.         contentPane.setBorder(new EmptyBorder(12,12,12,12));
  49.         contentPane.setLayout(new BorderLayout(6,6));
  50.     }
  51.    
  52.     /**
  53.      * Menampilkan layar awal dari ATM
  54.      */
  55.     private void viewLayarAwal()
  56.     {
  57.         JPanel layarawal = new JPanel(new GridLayout(0,1));
  58.        
  59.         layarawal.add(addSpace());
  60.         layarawal.add(addSpace());
  61.         layarawal.add(addSpace());
  62.         JLabel selamatDatang = new JLabel("SELAMAT DATANG", JLabel.CENTER);
  63.         selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
  64.         layarawal.add(selamatDatang);
  65.         selamatDatang = new JLabel("DI ATM BCA", JLabel.CENTER);
  66.         selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
  67.         layarawal.add(selamatDatang);
  68.         selamatDatang = new JLabel("SILAHKAN MASUKKAN KARTU ANDA", JLabel.CENTER);
  69.         selamatDatang.setFont(new Font("Calibri",Font.BOLD, 30));
  70.         layarawal.add(selamatDatang);
  71.        
  72.         JPanel flow = new JPanel();
  73.         flow.add(layarawal);
  74.         contentPane.add(flow, BorderLayout.CENTER);
  75.        
  76.         JButton kartu = new JButton("Kartu Impostor");
  77.         kartu.addActionListener(new ActionListener(){
  78.             public void actionPerformed(ActionEvent e){ inserted();}
  79.         });
  80.         contentPane.add(kartu, BorderLayout.SOUTH);
  81.     }
  82.    
  83.     /**
  84.      * Menampilkan layar untuk memasukkan PIN ATM
  85.      */
  86.     private void viewLayarPIN()
  87.     {
  88.         JLabel header = new JLabel("ATM BCA", JLabel.CENTER);
  89.         header.setFont(new Font("Calibri", Font.BOLD, 40));
  90.         contentPane.add(header, BorderLayout.NORTH);
  91.        
  92.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  93.        
  94.         deskripsi.add(addSpace());
  95.         JLabel desc = new JLabel("MASUKKAN PIN ANDA", JLabel.LEFT);
  96.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  97.         deskripsi.add(desc);
  98.        
  99.         JPanel inputPin = new JPanel();
  100.         desc = new JLabel(">");
  101.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  102.         inputPin.add(desc);
  103.         JTextField pin = new JTextField(10);
  104.         pin.setFont(new Font("Calibri", Font.BOLD, 30));
  105.         inputPin.add(pin);
  106.         deskripsi.add(inputPin);
  107.        
  108.         JPanel flow = new JPanel();
  109.         flow.add(deskripsi);
  110.         contentPane.add(flow, BorderLayout.CENTER);
  111.        
  112.         JPanel btn = new JPanel(new GridLayout(1,0));
  113.         JButton cancel = new JButton("CANCEL");
  114.         cancel.addActionListener(new ActionListener(){
  115.             public void actionPerformed(ActionEvent e){ System.exit(0); }
  116.         });
  117.         btn.add(cancel);
  118.         JButton okeBt = new JButton("OKE");
  119.         okeBt.addActionListener(new ActionListener(){
  120.             public void actionPerformed(ActionEvent e){ insertPin(pin);}
  121.         });
  122.         btn.add(okeBt);
  123.         contentPane.add(btn, BorderLayout.SOUTH);
  124.        
  125.         frame.pack();
  126.     }
  127.    
  128.     /**
  129.      * Menampilkan layar utama dari mesin ATM
  130.      */
  131.     private void viewLayarUtama()
  132.     {
  133.         boolean struk = false;
  134.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  135.        
  136.         JLabel desc = new JLabel("UNTUK MENCETAK UANG TANPA STRUK", JLabel.CENTER);
  137.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  138.         deskripsi.add(desc);
  139.         desc = new JLabel("PILIH NOMINAL UANG YANG TELAH DISEDIAKAN", JLabel.CENTER);
  140.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  141.         deskripsi.add(desc);
  142.         desc = new JLabel("UNTUK MEMBATALKAN TRANSAKSI", JLabel.CENTER);
  143.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  144.         deskripsi.add(desc);
  145.         desc = new JLabel("TEKAN CANCEL", JLabel.CENTER);
  146.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  147.         deskripsi.add(desc);
  148.        
  149.         JPanel flow = new JPanel();
  150.         flow.add(deskripsi);
  151.         contentPane.add(deskripsi, BorderLayout.NORTH);
  152.        
  153.         JPanel btnWest = new JPanel(new GridLayout(0,1));
  154.         JButton money = new JButton("100.000");
  155.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  156.         money.addActionListener(new ActionListener(){
  157.             public void actionPerformed(ActionEvent e){ tarik(100000,struk);}
  158.         });
  159.         btnWest.add(money);
  160.         money = new JButton("500.000");
  161.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  162.         money.addActionListener(new ActionListener(){
  163.             public void actionPerformed(ActionEvent e){ tarik(500000,struk);}
  164.         });
  165.         btnWest.add(money);
  166.         money = new JButton("1.000.000");
  167.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  168.         money.addActionListener(new ActionListener(){
  169.             public void actionPerformed(ActionEvent e){ tarik(1000000,struk);}
  170.         });
  171.         btnWest.add(money);
  172.         money = new JButton("DAFTAR E-BANKING");
  173.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  174.         btnWest.add(money);
  175.         contentPane.add(btnWest, BorderLayout.WEST);
  176.        
  177.         JPanel btnEast = new JPanel(new GridLayout(0,1));
  178.         money = new JButton("2.000.000");
  179.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  180.         money.addActionListener(new ActionListener(){
  181.             public void actionPerformed(ActionEvent e){ tarik(2000000,struk);}
  182.         });
  183.         btnEast.add(money);
  184.         money = new JButton("3.000.000");
  185.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  186.         money.addActionListener(new ActionListener(){
  187.             public void actionPerformed(ActionEvent e){ tarik(3000000,struk);}
  188.         });
  189.         btnEast.add(money);
  190.         money = new JButton("5.000.000");
  191.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  192.         money.addActionListener(new ActionListener(){
  193.             public void actionPerformed(ActionEvent e){ tarik(5000000,struk);}
  194.         });
  195.         btnEast.add(money);
  196.         money = new JButton("TRANSAKSI LAINNYA");
  197.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  198.         money.addActionListener(new ActionListener(){
  199.             public void actionPerformed(ActionEvent e){ transaksiLainnya();}
  200.         });
  201.         btnEast.add(money);
  202.         contentPane.add(btnEast, BorderLayout.EAST);
  203.        
  204.         JButton cancel = new JButton("CANCEL");
  205.         cancel.addActionListener(new ActionListener(){
  206.             public void actionPerformed(ActionEvent e){ System.exit(0); }
  207.         });
  208.         contentPane.add(cancel, BorderLayout.SOUTH);
  209.        
  210.         frame.pack();
  211.     }
  212.    
  213.     /**
  214.      * Menampilkan layar transaksi lainnya
  215.      */
  216.     private void viewLayarLainnya()
  217.     {
  218.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  219.        
  220.         JLabel desc = new JLabel("SILAHKAN MEMILIH SALAH SATU OPSI", JLabel.CENTER);
  221.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  222.         deskripsi.add(desc);
  223.         desc = new JLabel("UNTUK MEMBATALKAN TRANSAKSI", JLabel.CENTER);
  224.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  225.         deskripsi.add(desc);
  226.         desc = new JLabel("TEKAN CANCEL", JLabel.CENTER);
  227.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  228.         deskripsi.add(desc);
  229.         deskripsi.add(addSpace());
  230.        
  231.         JPanel flow = new JPanel();
  232.         flow.add(deskripsi);
  233.         contentPane.add(deskripsi, BorderLayout.NORTH);
  234.        
  235.         JPanel btnWest = new JPanel(new GridLayout(0,1));
  236.         JButton money = new JButton("INFORMASI");
  237.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  238.         btnWest.add(money);
  239.         money = new JButton("PENARIKAN TUNAI");
  240.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  241.         money.addActionListener(new ActionListener(){
  242.             public void actionPerformed(ActionEvent e){ viewLayarTarikManual();}
  243.         });
  244.         btnWest.add(money);
  245.         money = new JButton("TRANSFER");
  246.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  247.         btnWest.add(money);
  248.         money = new JButton("VOUCHER ISI ULANG");
  249.         money.setFont(new Font("Calibri", Font.BOLD, 20));
  250.         btnWest.add(money);
  251.         contentPane.add(btnWest, BorderLayout.WEST);
  252.        
  253.         JPanel btnEast = new JPanel(new GridLayout(0,1));
  254.         money = new JButton("PEMBAYARAN");
  255.         money.setFont(new Font("Calibri", Font.BOLD, 20));        
  256.         btnEast.add(money);
  257.         money = new JButton("GANTI PIN");
  258.         money.setFont(new Font("Calibri", Font.BOLD, 20));        
  259.         btnEast.add(money);
  260.         money = new JButton("FLAZZ");
  261.         money.setFont(new Font("Calibri", Font.BOLD, 20));        
  262.         btnEast.add(money);
  263.         money = new JButton("PEMBELIAN");
  264.         money.setFont(new Font("Calibri", Font.BOLD, 20));        
  265.         btnEast.add(money);
  266.         contentPane.add(btnEast, BorderLayout.EAST);
  267.        
  268.         JButton back = new JButton("BACK");
  269.         back.addActionListener(new ActionListener(){
  270.             public void actionPerformed(ActionEvent e){
  271.                 contentPane.removeAll();
  272.                 makeContentPane();
  273.                 viewLayarUtama();
  274.             }
  275.         });
  276.         contentPane.add(back, BorderLayout.SOUTH);
  277.        
  278.         frame.pack();
  279.     }
  280.    
  281.     /**
  282.      * Menampilkan layar tarik manual
  283.      */
  284.     private void viewLayarTarikManual()
  285.     {
  286.         contentPane.removeAll();
  287.         makeContentPane();
  288.        
  289.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  290.         JLabel desc = new JLabel("SILAHKAN MASUKKAN JUMLAH UANG", JLabel.CENTER);
  291.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  292.         deskripsi.add(desc);
  293.         desc = new JLabel("YANG DIINGINKAN", JLabel.CENTER);
  294.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  295.         deskripsi.add(desc);
  296.         contentPane.add(deskripsi, BorderLayout.NORTH);
  297.        
  298.         JPanel center = new JPanel(new GridLayout(0,1));
  299.        
  300.         center.add(addSpace());
  301.         JPanel inputpin = new JPanel();
  302.         JLabel rp = new JLabel("RP");
  303.         rp.setFont(new Font("Calibri", Font.BOLD, 30));
  304.         JTextField inputUang = new JTextField(20);
  305.         inputUang.setFont(new Font("Calibri", Font.BOLD, 30));
  306.         inputpin.add(rp);
  307.         inputpin.add(inputUang);
  308.         center.add(inputpin);
  309.        
  310.         JPanel btn = new JPanel();
  311.         JButton benar = new JButton("BENAR");
  312.         benar.setFont(new Font("Calibri", Font.BOLD, 30));
  313.         benar.addActionListener(new ActionListener(){
  314.             public void actionPerformed(ActionEvent e){
  315.                 if(!inputUang.getText().equals("")){;
  316.                     cetakStruk(Integer.parseInt(inputUang.getText()));
  317.                 }
  318.             }
  319.         });
  320.         btn.add(benar);
  321.         JButton salah = new JButton("SALAH");
  322.         salah.setFont(new Font("Calibri", Font.BOLD, 30));
  323.         salah.addActionListener(new ActionListener(){
  324.             public void actionPerformed(ActionEvent e){
  325.                 inputUang.setText("");
  326.             }
  327.         });        
  328.         btn.add(salah);
  329.         center.add(btn);
  330.        
  331.         JButton back = new JButton("BACK");
  332.         back.addActionListener(new ActionListener(){
  333.             public void actionPerformed(ActionEvent e){ transaksiLainnya(); }
  334.         });
  335.         contentPane.add(back, BorderLayout.SOUTH);
  336.        
  337.         JPanel flow = new JPanel();
  338.         flow.add(center);
  339.         contentPane.add(flow, BorderLayout.CENTER);
  340.        
  341.         frame.pack();
  342.     }
  343.    
  344.     /**
  345.      * Menampilkan layar apakah pengguna ingin mencetak struk atau tidak
  346.      */
  347.     private void viewCetakStruk(int uang)
  348.     {
  349.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  350.        
  351.         deskripsi.add(addSpace());
  352.         deskripsi.add(addSpace());  
  353.         JLabel quest = new JLabel("APAKAH ANDA INGIN MENCETAK STRUK", JLabel.CENTER);
  354.         quest.setFont(new Font("Calibri", Font.BOLD, 30));
  355.         deskripsi.add(quest);
  356.         quest = new JLabel("PADA TRANSAKSI INI?", JLabel.CENTER);
  357.         quest.setFont(new Font("Calibri", Font.BOLD, 30));
  358.         deskripsi.add(quest);
  359.         deskripsi.add(addSpace());
  360.        
  361.         JPanel btn = new JPanel();
  362.         JButton opsi = new JButton("YA");
  363.         opsi.setFont(new Font("Calibri", Font.BOLD, 30));
  364.         opsi.addActionListener(new ActionListener(){
  365.             public void actionPerformed(ActionEvent e){ tarik(uang, true);}
  366.         });
  367.         btn.add(opsi);
  368.         opsi = new JButton("TIDAK");
  369.         opsi.addActionListener(new ActionListener(){
  370.             public void actionPerformed(ActionEvent e){ tarik(uang, false);}
  371.         });
  372.         opsi.setFont(new Font("Calibri", Font.BOLD, 30));
  373.         btn.add(opsi);
  374.         deskripsi.add(btn);
  375.        
  376.         JPanel flow = new JPanel();
  377.         flow.add(deskripsi);
  378.         contentPane.add(flow, BorderLayout.CENTER);
  379.        
  380.         frame.pack();
  381.     }
  382.    
  383.     /**
  384.      * Menampilkan layar saat proses penarikan terjadi (karena tidak ada sistem yang
  385.      * mengatur maka proses berakhir secara manual)
  386.      *
  387.      * @param dapatProses   Menunjukkan apakah proses penarikan berhasil atau tidak
  388.      */
  389.     private void viewLayarProses(boolean struk)
  390.     {
  391.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  392.        
  393.         deskripsi.add(addSpace());
  394.         deskripsi.add(addSpace());
  395.         JLabel desc = new JLabel("TRANSAKSI ANDA", JLabel.CENTER);
  396.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  397.         deskripsi.add(desc);
  398.         desc = new JLabel("SEDANG DIPROSES.......", JLabel.CENTER);
  399.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  400.         deskripsi.add(desc);
  401.         deskripsi.add(addSpace());
  402.         deskripsi.add(addSpace());
  403.         desc = new JLabel("BILA ANDA MENGALAMI PROBLEM", JLabel.CENTER);
  404.         desc.setFont(new Font("Calibri", Font.BOLD, 30));  
  405.         deskripsi.add(desc);
  406.         desc = new JLabel("MOHON MENGHUBUNGI BCA 021XXXXX", JLabel.CENTER);
  407.         desc.setFont(new Font("Calibri", Font.BOLD, 30));        
  408.         deskripsi.add(desc);
  409.        
  410.         JPanel flow = new JPanel();
  411.         flow.add(deskripsi);
  412.         contentPane.add(flow, BorderLayout.CENTER);
  413.        
  414.         JButton lanjut = new JButton("Lanjut");
  415.         lanjut.addActionListener(new ActionListener(){
  416.             public void actionPerformed(ActionEvent e){ prosesEnd(struk);}
  417.         });
  418.         contentPane.add(lanjut, BorderLayout.SOUTH);
  419.        
  420.         frame.pack();
  421.     }
  422.      
  423.     /**
  424.      * Menampilkan layar akhir
  425.      */
  426.     private void viewLayarAkhir(boolean struk)
  427.     {
  428.         JPanel deskripsi = new JPanel(new GridLayout(0,1));
  429.        
  430.         deskripsi.add(addSpace());
  431.         deskripsi.add(addSpace());
  432.         JLabel desc = new JLabel("SILAHKAN MENGAMBIL UANG ANDA", JLabel.CENTER);
  433.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  434.         deskripsi.add(desc);
  435.         if(!struk){
  436.             desc = new JLabel("ATM BCA TIDAK AKAN MENCETAK", JLabel.CENTER);
  437.             desc.setFont(new Font("Calibri", Font.BOLD, 30));            
  438.             deskripsi.add(desc);
  439.         }
  440.         else{
  441.             desc = new JLabel("ATM BCA AKAN MENCETAK", JLabel.CENTER);
  442.             desc.setFont(new Font("Calibri", Font.BOLD, 30));
  443.             deskripsi.add(desc);
  444.         }
  445.         desc = new JLabel("STRUK UNTUK TRANSAKSI INI", JLabel.CENTER);
  446.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  447.         deskripsi.add(desc);
  448.         deskripsi.add(addSpace());
  449.         desc = new JLabel("TERIMA KASIH", JLabel.CENTER);
  450.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  451.         deskripsi.add(desc);
  452.         desc = new JLabel("Rp "+atm.getNominal(), JLabel.CENTER);
  453.         desc.setFont(new Font("Calibri", Font.BOLD, 30));
  454.         deskripsi.add(desc);
  455.        
  456.         JPanel flow = new JPanel();
  457.         flow.add(deskripsi);
  458.         contentPane.add(flow, BorderLayout.CENTER);
  459.        
  460.         JButton tutup = new JButton("AMBIL");
  461.         tutup.addActionListener(new ActionListener(){
  462.             public void actionPerformed(ActionEvent e){ System.exit(0);}
  463.         });
  464.         contentPane.add(tutup, BorderLayout.SOUTH);
  465.        
  466.         frame.pack();
  467.     }
  468.    
  469.    
  470.     /**
  471.      * Memasukkan kartu impostor (sebagai demo) untuk mesin ATM
  472.      */
  473.     private void inserted()
  474.     {
  475.         kartuPengguna = new KartuDebit();
  476.         atm = new ATMMachine(kartuPengguna);
  477.         contentPane.removeAll();
  478.         makeContentPane();
  479.         viewLayarPIN();
  480.     }
  481.    
  482.     /**
  483.      * Memproses PIN yang dimasukkan pada mesin
  484.      */
  485.     private void insertPin(JTextField pin)
  486.     {
  487.         if(atm.getPin().equals(pin.getText())){
  488.            contentPane.removeAll();
  489.            makeContentPane();
  490.            viewLayarUtama();
  491.         }
  492.         else{
  493.             JOptionPane.showMessageDialog(frame, "PIN ANDA SALAH!", "Pesan",
  494.             JOptionPane.INFORMATION_MESSAGE);
  495.             pin.setText("");
  496.         }
  497.     }
  498.    
  499.     /**
  500.      * Memproses untuk menampilkan layar transaksi lainnya
  501.      */
  502.     private void transaksiLainnya()
  503.     {
  504.         contentPane.removeAll();
  505.         makeContentPane();
  506.         viewLayarLainnya();
  507.     }
  508.    
  509.     /**
  510.      * Memproses untuk menampilkan layar cetak struk
  511.      */
  512.     private void cetakStruk(int uang)
  513.     {
  514.         if(uang <= atm.getNominal()){
  515.             contentPane.removeAll();
  516.             makeContentPane();
  517.             viewCetakStruk(uang);
  518.         }
  519.         else{
  520.             JOptionPane.showMessageDialog(frame, "MAAF SALDO ANDA TIDAK CUKUP",
  521.             "Pesan", JOptionPane.INFORMATION_MESSAGE);
  522.         }
  523.     }
  524.    
  525.     /**
  526.      * Memproses uang yang ditarik
  527.      */
  528.     private void tarik(int uang, boolean struk)
  529.     {
  530.         if(uang <= atm.getNominal()){
  531.             atm.prosesPenarikan(uang);
  532.             contentPane.removeAll();
  533.             makeContentPane();
  534.             viewLayarProses(struk);
  535.         }
  536.         else{
  537.             JOptionPane.showMessageDialog(frame, "MAAF SALDO ANDA TIDAK CUKUP",
  538.             "Pesan", JOptionPane.INFORMATION_MESSAGE);
  539.         }
  540.     }
  541.    
  542.     /**
  543.      * Menampilkan layar selanjutnya setelah proses penarikan selesai
  544.      */
  545.     private void prosesEnd(boolean struk)
  546.     {
  547.         contentPane.removeAll();
  548.         makeContentPane();
  549.         viewLayarAkhir(struk);
  550.     }
  551.    
  552.     /**
  553.      * Menambhkan spacing
  554.      */
  555.     private JLabel addSpace()
  556.     {
  557.         return new JLabel("");
  558.     }
  559. }
  560.  
RAW Paste Data