Powered By Blogger

0 Layout Manager

Minggu, 04 Desember 2011
  • Seperti pada gambar, layout manager bertugas menyusun komponen-komponen(button, label, checkbox, dll) di dalam suatu container (panel, frame, dll).
  • Layout manager menentukan posisi danukuran setiap komponen di dalam container. Proses ini akan berbeda untuk setiap class layout yang digunakan.
  • AWT dan Swing memiliki beberapa layout manager standar yang penggunaannya seringkali dikombinasikansesuai situasi dan kebutuhan kita.


    1. FlowLayout
    • FlowLayout merupakan layout manager yang simpel.
    • FlowLayout menyusun komponen berdasarkan ukuran defaultmasing-masing, dengan posisi mulai dari kiri ke kanan dan dari atas ke bawah di dalam container yang digunakan.
    • FlowLayout dapat memiliki “row justification”: LEFT, CENTER, atau RIGHT serta “padding” horizontal/vertical.
    • Secara default, flow layout menggunakan justification CENTER. Artinya, semua komponen akan disimpan di posisi tengah-tengah.
    • FlowLayout merupakan default untuk JPanel.
    • Contoh: JPanel panel1 = new JPanel(); panel1.setLayout(new FlowLayout());
    • Pada dasarnya, untuk aplikasi sesungguhnya, kita tidak disarankan menggunakan FlowLayout karena sifatnya yang tidak bisa memposisikan komponen dengan pasti.
             Coding :
    import java.awt.FlowLayout;
    import java.awt.LayoutManager;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;

    public class Flow extends JFrame {
    public Flow() {
    createUserInterface();
    }

    private void createUserInterface() {
    JPanel panel1 = new JPanel();
    panel1.setLayout(new FlowLayout());
    panel1.add(new JButton("One"));
    panel1.add(new JButton("Two"));
    panel1.add(new JButton("Three"));
    panel1.add(new JButton("Four"));
    panel1.add(new JButton("Five"));

    this.add(panel1);
    this.setTitle("Flow");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400, 75);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    }

    public static void main(String[] args) {
    Flow app = new Flow();
    }

    }

    Tampilan :
    2. GridLayout
    • GridLayout menempatkan komponen dalam bentuk “rectangular grid”. Ada 3 constructor untuk GridLayout:
    • GridLayout(): membuat layout dengan satu kolom per komponen. Hanya satu baris yang digunakan.
    • GridLayout(int rows, int cols): membuat suatu layout berdasarkan jumlah baris dan kolom yang diinginkan.
    • GridLayout(int rows, int cols, int hgap, int vgap): membuat layout berdasarkan jumlah baris dan kolom yang diinginkan, serta ukuran jarak (gap) horisontal maupun vertical untuk setiap baris dan kolom tersebut.
    • GridLayout menempatkan komponen dengan urutan dari kiri ke kanan dan dari atas ke bawah.
    • GridLayout akan memaksa setiap komponen untuk menempati space container yang kosong serta membagi rata ukuran space tersebut.
    • GridLayout paling cocok digunakan untuk menyusun komponen yang berukuran sama, misalnya 2 buah JPanel berukuran sama di dalam sebuah frame.
    • Contoh:frame.add(panel1); frame.add(panel2);
    • frame.setLayout(newGridLayout(2, 1));
    • Kita dapat men-set jumlah baris dan kolom dengan angka 0. Artinya, kita tidak mempedulikan berapa banyak komponen yang akan masuk ke dalam dimensi layout manager tersebut.
    Coding :
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;

    public class GridLayoutTest {
      public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("GridLayout Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new GridLayout(3, 2));
        frame.add(new JButton("Button 1"));
        frame.add(new JButton("Button 2"));
        frame.add(new JButton("Button 3"));
        frame.add(new JButton("Button 4"));
        frame.add(new JButton("Button 5"));
        frame.add(new JButton("Button 6"));
        frame.add(new JButton("Button 7"));
        frame.add(new JButton("Button 8"));
        frame.pack();
        frame.setVisible(true);
      }
    }
    Tampilan
    3.  Border Layout
    • BorderLayout menyusun komponen berdasarkan lokasi geografis: NORTH, SOUTH, EAST, WEST, and CENTER.
    • Secara optional, kita dapat juga memberikan paddingdi antara komponen.
    • BorderLayout merupakan layout default untuk JWindowdan JFrame.
    • Karena setiap komponen diasosiasikan dengan suatu arah geografis, akibatnya layout ini hanya dapat menangani maksimal 5 komponen
    • Pada saat menambahkan suatu komponen kepada container yang memiliki border layout, kita harus menentukan secara bersamaan komponen-nya dan posisi-nya.
    • Contoh:
             frame.setLayout(new BorderLayout( ));
             frame.add(new JButton("Button1"), BorderLayout.NORTH );
             frame.add(new JButton("Button2"), BorderLayout.SOUTH );


    Coding :
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.LayoutManager;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;

    public class Border extends JFrame {
    public Border() {
    createUserInterface();
    }

    private void createUserInterface() {

    this.setLayout(new BorderLayout());
    this.add(new JButton("North"), BorderLayout.NORTH);
    this.add(new JButton("South"), BorderLayout.SOUTH);
    this.add(new JButton("East"), BorderLayout.EAST);
    this.add(new JButton("West"), BorderLayout.WEST);
    this.add(new JButton("Center"), BorderLayout.CENTER);

    this.setTitle("Border");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 300);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    }

    public static void main(String[] args) {
    Border app = new Border();
    }

    }


    Tampilan
    4. Box Layout
    • Layout manager yang telah kita bahas sebelumnya merupakan bagian dari package java.awt.
    • Javax.swingmemiliki beberapa tambahan layout manager lagi, salah satunya adalah: BoxLayout.
    • Layout manager ini sangat berguna untuk membuat toolbarssederhana atau vertical button bars.
    • Cara kerjanya sangat sederhana yaitu menempatkan komponen dalam satu baris atau satu kolom.
    • Untuk mempermudah penggunaan BoxLayout, Swing menyediakan sebuah kelas yang bernama Boxyaitu sebuah container yang secara otomatismemiliki BoxLayout manager.
    • Box memiliki beberapa methodsyang akan mempermudah kita dalam menggunakan BoxLayout manager, yaitu:
    createHorizontalBox() untuk membuat box horizontal
    createHorizontalGlue() untuk merekatkan komponen
    createHorizontalStrut(int n) untuk memberi jarak antar komponen
    createVerticalBox() untuk membuat box vertical
    createVerticalGlue() untuk merekatkan komponen
    createVerticalStrut(int n) untuk memberi jarak antar komponen

    Coding :
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;

    public class BoxLayoutTest {

      public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("BoxLayout Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        BoxLayout boxLayout = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS); // top to bottom
        frame.setLayout(boxLayout);
        frame.add(new JButton("Button 1"));
        frame.add(new JButton("Button 2"));
        frame.add(new JButton("Button 3"));
        frame.pack();

        frame.setVisible(true);
      }
    }
    Tampilan
    5. Card Layout
    • CardLayout merupakan layout manager yang mampu menciptakan efek “tumpukan” komponen.
    • Artinya, layout ini tidak memposisikan komponen di lokasi-lokasi tertentu di dalam kontainer, melainkan menampilkannya satu demi satu.
    • Penggunaan CardLayout biasanya untuk membuat panel yang bersifat custom-tabbed.
    • Namun, sebenarnya kita dapat membuat panel tersebut dengan menggunakan komponen JTabbedPane.
    • Untuk mempraktekkan cara kerja dan efek “tumpukan”dari CardLayout ini, kita perlu mempelajari terlebih dahulu mengenai “event-driven programming” seperti yang ada di Latihan 5.
    Coding :
    import java.awt.CardLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class TryCardLayout extends JPanel implements ActionListener {
      CardLayout card = new CardLayout(50, 50); // Create layout
      public TryCardLayout() {
        setLayout(card);
        JButton button;
        for (int i = 1; i <= 6; i++) {
          add(button = new JButton(" Press " + i), "Card" + i); // Add a button
          button.addActionListener(this); // Add listener for button
        }
      }
      // Handle button events
      public void actionPerformed(ActionEvent e) {
        card.next(this); // Switch to the next card
      }
      public static void main(String[] args) {
        JFrame aWindow = new JFrame();
        aWindow.setBounds(30, 30, 300, 300);
        aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        aWindow.getContentPane().add(new TryCardLayout());
        aWindow.setVisible(true);
      }
    }
    Tampilan 
    6. GridBag Layout
    • GridBagLayout merupakan layaout manager yang sangat fleksibel.
    • Layout ini memampukan kita untuk memposisikan komponen relatif terhadap komponen lainnya berdasarkan constraint tertentu.
    • Dengan menggunakan GridBagLayout, kita dapat menciptakan layout apapun juga, tanpa batas.
    • Komponen disusun pada koordinat tertentu pada sebuah grid yang disebut “logical coordinate”.
    • Logical coordinate berarti bahwa koordinat suatu komponen ditentukan oleh sekumpulan komponen lainnya.
    • Baris dan kolom dari grid tersebut bersifat “stretch” yang bergantung pada sizedan constraintyang dimilikinya.
    • Walaupun fleksibel, pembuatan GridBag ini terkadang sangat membingungkan karena kita harus mengatur berbagai sizedan constraint dari setiap komponen yang digunakan.
    • Sebenarnya, penggunaan GridBagLayout ini jauh lebih mudah apabila kita menggunakan tools yang mendukung WYSIWYG GUI builder. (contohnya: NetBeans IDE)
    Coding :
    import java.awt.ComponentOrientation;
    import java.awt.Container;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;

    import javax.swing.JButton;
    import javax.swing.JFrame;

    public class GridBagLayoutDemo {
      final static boolean shouldFill = true;

      final static boolean shouldWeightX = true;

      final static boolean RIGHT_TO_LEFT = false;

      public static void addComponentsToPane(Container pane) {
        if (RIGHT_TO_LEFT) {
          pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        }

        JButton button;
        pane.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        if (shouldFill) {
          // natural height, maximum width
          c.fill = GridBagConstraints.HORIZONTAL;
        }

        button = new JButton("Button 1");
        if (shouldWeightX) {
          c.weightx = 0.5;
        }
        c.gridx = 0;
        c.gridy = 0;
        pane.add(button, c);

        button = new JButton("Button 2");
        c.gridx = 1;
        c.gridy = 0;
        pane.add(button, c);

        button = new JButton("Button 3");
        c.gridx = 2;
        c.gridy = 0;
        pane.add(button, c);

        button = new JButton("Long-Named Button 4");
        c.ipady = 40; // make this component tall
        c.weightx = 0.0;
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 1;
        pane.add(button, c);

        button = new JButton("5");
        c.ipady = 0; // reset to default
        c.weighty = 1.0; // request any extra vertical space
        c.anchor = GridBagConstraints.PAGE_END; // bottom of space
        c.insets = new Insets(10, 0, 0, 0); // top padding
        c.gridx = 1; // aligned with button 2
        c.gridwidth = 2; // 2 columns wide
        c.gridy = 2; // third row
        pane.add(button, c);
      }

      /**
       * Create the GUI and show it. For thread safety, this method should be
       * invoked from the event-dispatching thread.
       */
      private static void createAndShowGUI() {
        // Create and set up the window.
        JFrame frame = new JFrame("GridBagLayoutDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Set up the content pane.
        addComponentsToPane(frame.getContentPane());

        // Display the window.
        frame.pack();
        frame.setVisible(true);
      }

      public static void main(String[] args) {
        // Schedule a job for the event-dispatching thread:
        // creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            createAndShowGUI();
          }
        });
      }
    }
    Tampilan :

    0 KOMPONEN SWING

    Sabtu, 03 Desember 2011
    • merupakan bagian dari Java™ Foundation Classes (JFC), dan dapat digunakan dengan JDK™ 1.1 atau the Java™ 2 platform.
    • Komponen User Interface Swing dikatgorikan sebagai berikut :


    Container
    JFrame baru dapat diisi dengan komponen setelah lebih dahulu diletakkan kontainer. Kontainer merupakan komponen khusus yang berguna untuk menampung komponen GUI lainnya.

    Pada contoh berikut dibuat dua buah tombol dengan memanfaatkan kontainer JPanel . Tombol kedua menggunakan gamabr icon yang diambil dari file Tools.gif. Feli Tools.gif berada dalam folder yang sama dengan file Java(FrameB.java)yang sedang dikompilasi
    Coding :
    import javax.swing.*;
    import java.awt.*;
    public class FrameB extends javax.swing.JFrame {
     public FrameB() {
      super("Frame dan Button");
      setSize(350, 150);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
     }

     public static void main(String args[]){
      FrameB fb = new FrameB();
      JPanel panel = new JPanel();
      JButton jbtOK = new JButton("OK");
      ImageIcon icTools = new ImageIcon("Tools.gif");  
      JButton jbtNotOK = new JButton("Tools",icTools);
      panel.add(jbtOK);
      panel.add(jbtNotOK);
      fb.add(panel);
      fb.setVisible(true);
      }
    }


    Tampilan :





    Dialog Box
    Dialog Box dapat dibuat menggunakan class JOptionPane. Terdapat empat jenis dialog box dalam java :

    • ConfirmDialog, konfirmasi kepada pengguna program tentang sesuatu. Tombol yang biasa digunakan terdiri atas: Yes, No, dan Cancel.
    • InputDialog, meminta masukan untuk diolah.
    • MessageDialog, menampilkan pesan kepada pengguna.
    • OptionDialog, campuran dari ketiga jenis dialog lainnya.
    Contoh Dialog Box 
    Coding :
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    import javax.swing.JOptionPane;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;


    public class Utama {
       public static void main(String[] args) {
    JFrame utama = new JFrame("Menu Utama");
    utama.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    utama.setSize(new Dimension(300,150));
    utama.setLocationRelativeTo(null);
    utama.setLayout(new FlowLayout());
    JLabel nama = new JLabel("Nama        : ");
    JLabel password = new JLabel("Password : ");

    final JTextField isinama = new JTextField(15);
    final JPasswordField isipassword = new JPasswordField(15);

    JButton buttonlogin = new JButton("Login");
    buttonlogin.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
    String unama = isinama.getText();
    @SuppressWarnings("deprecation")
    String pass = isipassword.getText();
    if (unama.equals("ina") && pass.equals("meyta")) {
    JOptionPane.showMessageDialog(null,
    "Selamat Datang Anda Berhasil Login");
    isinama.setText("");
    isipassword.setText("");
    isinama.requestFocus();
    } else {
    JOptionPane.showMessageDialog(null,
    "Nama dan Password Anda salah, silahkan ulangi");
    isinama.setText("");
    isipassword.setText("");
    isinama.requestFocus();
    }

    }
    });
    JButton buttonreset = new JButton("Reset");
    buttonreset.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    isinama.setText("");
    isipassword.setText("");
    isinama.requestFocus();

    }
    });

    utama.add(nama);
    utama.add(isinama);
    utama.add(password);
    utama.add(isipassword);
    utama.add(buttonlogin);
    utama.add(buttonreset);
    utama.setVisible(true);
    }
    }

    Tampilan :



    0 Pengenalan Java

    Sejarah Java
    Java berawal dari penelitian perusahaan Sun Microsystems dengan nama sandi Green tahun 1991.
    Terdapat prediksi bahwa mikroprosesor akan digunakan luas pada peralatan-peralatan elektronik.
    Karena adanya bermacam tipe mikroprosesor, maka dibutuhkan sebuah bahasa pemrograman yang dapat berjalan di semua mikroprosesor,

    Terciptalah sebuah bahasa pemograman baru. Oleh James Gosling, yaitu salah satu orang yang berperan besar dalam proyek tersebut, program ini diberi nama Oak. Sesuai dengan pohon Oak yang tumbuh  dan bisa dilihat melalui jendela kerjanya di Sun Microsystem.

    Selang beberapa waktu kemudian, ditemukan bahwa sudah ada bahasa pemograman dengan nama Oak. Akhirnya setelah beberapa pegawai Sun mengunjungi sebuah kedai kopi, nama bahasa pemograman ini diganti dengan Java. Java merupakan salah satu jenis biji kopi yang ada di kedai tersebut, yaitu biji kopi Jawa.

    Sun Microsystem mengumumkan kehadiran bahasa Java secara formal di tahun 1995. Bahasa ini mulai disambut hangat masyarakat luas seiring dengan meledaknya era internet.

    Perkembangan Teknologi Java 
    Saat ini Sun Microsystem membagi Java menjadi empat jenis edisi, yaitu :
    1. Java Card
    2. J2ME
    3. J2SE
    4. J2EE
    Setiap Edisi Java terdiri atas dua komponen utama , yaitu :
    1. Java Aplication Program Interface (Java API)
    2. Java Run Time Environment (JRE)
    Keunggulan Java
    1. Relatif Mudah Dipelajari 
    2. Mudah dikembangkan
    3. Platform Independent
    Java Basic
      Java adalah sebuah bahasa pemograman yang bersifat OOP atau kata lainnya adalah Object Oriented  Programming dimana didalamnya kita harus memahami apa yang disebut dengan : 
      • Encapsulation
      • Inheritance
      • Polymorphisme
      Itu garis besarnya dasar java, supaya kita lebih paham tentang java, yuk kita liat contoh script yang sudah ada.

      contoh program java :

      Output dari program : Hello Java

      perintah "System.out.println" digunakan untuk menampilkan data

      Dalam java ada type-type variable, sebagai berikut : 
      • byte
      • short
      • int
      • long
      • float
      • double
      • char
      • String
      • boolean
      Nah, kan udah tau nih variable di java, sekarang kita pelajari cara mengdeklarasikan variabel tersebut :



      nah, kita udah deklarasikan variablenya tuh, sekarang kita isi variable itu yu.

      Selanjutnya kita akan belajar mengenai IF argument atau bisa disebut dengan IF decission atau pilihan menggunakan statement IF, dari sini kita bisa langsung paham dan mengerti, perintah ini adalah untuk melakukan operasi apabila statement tersebut terpenuhi.


      gampangkan? hehe, jadi disini akan mencetak tulisan "i sama dengan 5" jika kondisi terpenuhi, jika tidak terpenuhi maka tidak akan muncul.
      Selanjutnya mengetahui pengertian dari beberapa operator :

      • == berarti sama dengan
      • != berarti tidak sama dengan
      • <= berati lebih kecil sama dengan 
      • >= berarti lebih besar sama dengan
      • > berarti lebih besar
      • < berarti lebih kecil
      contoh penggunaan if.. else
      contoh penggunaan if bersarang atau juga bisa disebut nested if :

      Switch 
      Jika dipercabangan terdapat pilihan yang banyak, perintah switch lebih dianjurkan daripada menggunakan if. Switch lebih sering dipakai pada beberapa pilihan menggunakan satu variable sebagai penentu percabangan.

      Perulangan 
      Ada beberapa perintah yang digunakan untuk menerapkan perulangan dalam Java, antara lain:
      • While Loop
      • Do while loop
      • For Loop
      Array
      Kita sudah mempelajari bahwa setiap variable dengan tipe data primitif hanya mempunyai satu nilai saja.
      Jika programmer bekerja dengan banyak nila, tentu akan kesulitan jika harus menentukan nilai tersebut satu persatu.

      Dalam Kasus ini array sangat berguna. Dengan menggunakan array, variable dengan satu nama dapat digunakan untuk beberapa nilai sekaligus. 
      contoh program array :

      public class DemoArgs {
      public static void main(String[] angka) {
      if (angka.length < 2) {
      System.out.println("Gunakan minimal dua angka");
      System.exit(1);
      }
      int jumlah = 0;
      for (int i = 0; i < angka.length; i++) {
      jumlah += Integer.parseInt(angka[i]);
      }
      System.out.println("Hasil penjumlahan= " + jumlah);
      }
      }

      Java SWING

      • Swing adalah kit Java kedua untuk mendevelop GUI yang dikeluarkan oleh SUN
      • Dibangun di atas AWT(Abstract Windowing Toolkit) package(merupakan pengembangan dari AWT)
      • GUI didevelop menggunakan berbagai component yang diorganisasikan oleh container
      • Component Swing berinteraksi dengan user menggunakan sebuah model event listener
      Sejarah
      • Proyek dimulai akhir 1996
      • Di-develop secara aktif sejak spring 1997
      • Beta pada akhir 1997
      • Release pertama pada bulan Maret 1998 sebagai bagian dari JFC
      Swing
      • Swing adalah nama kode dari proyek yang mendevelop komponen baru. Bukan merupakan nama resmi
      • Namun nama ini lebih sering digunakan untuk menyebut komponen-komponen baru yang berhubungan dengan API
      Swing Menawarkan : 
      • kegunaan-kegunaan yang lebih berkembang
      • komponen-komponen baru
      • fitur yang lebih luas
      • event handling yang lebih baik
      • Look and feel yang bisa dipilih (Java. CDE/Motif, atau Windows look and feel)
      AWT  (ABSTRACT WINDOWS TOOLKITS)
      Abstract Window Toolkit disebut  toolkit karena didalamnya tersedia  class-class yang telah
      dirancang untuk membuat GUI. Paket AWT termasuk paket jadi untuk setiap versi Java.
      Berbeda dengan AWT, JSwing juga merupakan paket dari Java untuk merancang GUI tetapi
      paket JSwing ini merupakan paket tambahan yang harus di download secara terpisah.

      Permograman Secara Event-Driven 
      Program AWT dirancang menggunakan event dan event-handlers. Sebuah event merupakan
      aksi dari suatu komponen GUI seperti penekanan mouse (mouse clicked) , penggeseran
      mouse (mouse dragged), penekanan tomboh (key pressed), pemilihan komponen menu dan
      lain-lain.
      Sebuah objek seperti  button akan membangkitkan  event. Bila sebuah button ditekan maka
      button tersebut akan melakukan aksinya (firing the event). Aksi yang akan dilakukan oleh
      button itu akan dikerjakan oleh sebuah objek yang dikenal dengan sebutan  listener object.
      Anda sebagai programmerlah yang harus menentukan objek apa yang akan menjadi listener
      object untuk sebuah objek yang membangkitkan event. Sebagai contoh, bila anda klik mouse
      pada sebuah objek button (tombol), dan button tersebut memiliki listener object maka aksi
      dari penekanan tombol itu akan langsung dikirim ke listener object tersebut. Sebuah listerner
      object memiliki metode-metode yang menentukan apa yang akan terjadi pada saat button
      tersebut ditekan. Metode-metode ini dikenal dengan istilah event-handlers.

      Contoh Window Sederhana
      Untuk dapat menggunakan AWT diperlukan paket awt sebagai berikut:
       import java.awt.*; 
       import java.awt.event.*;
      Bila kita ingin membuat sebuah frame maka class yang akan dibuat harus menurunkan sifat
      dari class Frame. Perhatikan program berikut ini:
      import java.awt.*; 
       import java.awt.event.*; 
       public class MyFrame extends Frame 
       { 
        public void paint(Graphics g) 
        { 
         g.drawString("Frame dengan AWT", 75, 100); 
        } 
       } 


      import java.awt.*; 
       import java.awt.event.*; 
       public class TutupFrame extends WindowAdapter 
       { 
        public void windowClosing(WindowEvent e) 
        { 
         System.exit(0); 
        } 
       }

      import java.awt.*; 
       import java.awt.event.*; 
       public class FrameDemo 
      { 
       public static final int WIDTH = 300; 
       public static final int HEIGHT = 200;  
       public static void main(String args[]) 
       { 
        MyFrame mf = new MyFrame(); 
        mf.setSize(WIDTH, HEIGHT); 
        TutupFrame tf = new TutupFrame(); 
        mf.addWindowListener(tf); 
        mf.setVisible(true); 
       } 
      } 

      Penjelasan Program 
      Pada program FrameDemo diatas sebuah objek mf yang bertipe MyFrame. Melalui objek mf
      itu metode setSize dieksekusi. Metode setSize merupakan method yang diturunkan (inherite)
      dari class Frame yang berfungsi untuk menentukan ukuran dari frame yang ingin dibuat.
      Dalam hal ini berukuran lebar 300 dan tinggi 200.
      Untuk menutup window anda dapat menekan tombol X pada sudut kanan atas frame. Ketika
      anda menekan tombol tersebut, frame mengerjakan  event dan  event  mengirimkan aksi
      tersebut ke listener object. Dalam hal ini sebuah listener object dibuat dengan nama tf bertipe
      class TutupFrame yang menurunkan sifat dari class WindowAdapter (lihat class FrameDemo
      baris ke 11).  Untuk lebih jelas tentang class WindowAdapter lihat dokumentasi Java.
      setVisible juga merupakan method yang telah didefine dalam class Frame. Akibat dari
      statement  mf.setVisible(true) adalah membuat frame menjadi terlihat dilayar. Jika parameter
      false yang dikirim maka frame tidak akan telihat dilayar tetapi ada dalam memory

      Komponen AWT Yang Lain 
      Pada contoh berikut ini class yang digunakan tidak  hanya Frame, tetapi juga class Panel,
      Button, Rectangle, Graphics dan beberapa interface  seperti interface ActionListener dan
      MouseMotionListener.

      Netbeans
      Cara Instal Netbeans
      1. Jalankan aplikasi netbeans yang ada dalam CD,
      2. Klik tombol Next untuk melanjutkan instalasi
      3. Aktifkan I accept the terms in the license agreement lalu klik tombol Next.
      4. klik tombl Next untuk melakukan instalasi pada folder yang telah ditentukan secara otomatis.
      5. Masukkan password yang akan digunakan pada server Web GlassFish. Klik tombol Next kemudian Next lagi.
      6. klik tombol install untuk mulai melakukan instalasi.
      7. tunggu hingga instalasi selesai.
      8. klik tombol Finish. Maka Netbeans telah selesai diinstal.

      ECLIPSE
      Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse:

      • Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X.
      • Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.
      • Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya.

      Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in.

      0 Algoritma Pencarian

      Senin, 03 Januari 2011
      Pencarian Berurutan (Sequential Searching) 

           Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling sederhana.  Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan. 
           Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data.  Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.  Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir  pengulangan tidak ada data yang sama, berarti data tidak ada.  Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula. Algoritma pencarian berurutan dapat dituliskan sebagai berikut :
      • i ←  0 
      • ketemu ←  false 
      • Selama (tidak ketemu) dan (i <= N) kerjakan baris 4 
      • Jika (Data[i] = x) maka ketemu ←  true, jika tidak i ←  i + 1 
      • Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan
      • Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian sekuensial.

      int SequentialSearch(int x)
      {
           int i = 0;
           bool ketemu = false;
           while ((!ketemu) && (i < Max)){

      if(Data[i] == x)
           ketemu = true;
      else
           i++; 
      }
      if(ketemu)
           return i;
      else
           return -1;
      }   
      Pencarian Biner (Binary Search)

           Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam keadaan urut.  Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan.  Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner.  Misalnya saat ingin mencari suatu kata dalam kamus.
           Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.  Kemudian data yang dicari dibandingkan dengan data tengah.  Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.  Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.  Demikian seterusnya sampai data tengah sama dengan yang dicari. Untuk lebih jelasnya perhatikan contoh berikut.  Misalnya ingin mencari data 17
      pada sekumpulan data berikut :

      3  9  11  12  15  17  20  23  31  35
      awal tengah akhir

           Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4.  Berarti data tengah adalah data ke-4, yaitu 15.  Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini.  Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan posisi tengah + 1 atau 5.

      3  9  11  12  15  17  20  23  31  35
        awal tengah akhir

           Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7.  Berarti data tengah yang baru adalah data ke-7, yaitu 23.  Data yang dicari yaitu 17 dibandingkan dengan data tenah ini.  Karena 17 < 23, berarti proses dilanjukkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah – 1 atau 6.

      3  9  11  12  15  17  20  23  31  35
        awal = tengah  akhir

           Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5.  Berarti data tengah yang baru adalah data ke-5, yaitu 17.  data yang dicari dibandingkan dengan data tengah ini dan ternyata sama.  Jadi data ditemukan pada indeks ke-5. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada posisi akhir.  Jika posisi sudah lebih besar daripada posisi akhir berarti data tidak ditemukan. Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas.  Prosesnya hampir sama dengan pencarian data 17.  Tetapi setelah posisi awal 5 dan posisi akhir 6, data tidak ditemukan dan 16 < 17, maka posisi akhir menjadi posisi tengah – 1 atau = 4 sedangkan posisi awal = 5.  


      3  9  11  12  15  17  20  23  31  35
       akhir awal 
      Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan.
      Algoritma pencarian biner dapat dituliskan sebagai berikut : 

      • L  ←  0 
      • R ←  N - 1 
      • ketemu ←  false 
      • Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8    
      • m ←  (L + R) / 2 
      • Jika (Data[m] = x) maka ketemu ←  true 
      • Jika (x < Data[m]) maka R ←  m – 1 
      • Jika (x > Data[m]) maka L  ←  m + 1 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan
      Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner. 

      int BinarySearch(int x)
      { 

           int L = 0, R = Max-1, m;
           bool ketemu = false;
       
      while((L <= R) && (!ketemu)) 
          {
          m = (L + R) / 2;
          if(Data[m] == x)
      ketemu = true;
         else if (x < data[m])
         R = m - 1; 
      else
         L = m + 1;
       }
      if(ketemu)
        return m;
      else
        return -1;
      } 
           Fungsi diatas akan mengembalikan indeks dari data yang dicari.  Apabila data tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.  Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila data yang dicari tepat berada di tengah-tengah.  Jumlah pembandingan maksimum yang dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu : 
      C =²log(N)

      Pencarian Grover

           Pada persoalan pencarian dengan exhaustive search, diberikan suatu fungsi f(x) ,x = 0,1...(N-1), dimana f(x) adalah fungsi yang akan selalu menghasilkan 0 untuk semua  x, kecuali satu nilai  x yang akan menghasilkan Tujuan dari persoalan ini  adalah mencari nilai x sehingga f(x) = 1. Ide dasar dari algoritma pencarian kuantum (algoritma Grover) adalah misalkan ada  N buah status yang berkorespondensi dengan N item dalam suatu daftar tak terurut.  
           Peluang untuk setiap status, bahwa status tersebut adalah yang dicari dalam daftar tersebut adalah 1/N. Dengan prinsip mekanika kuantum, dimungkinkan untuk meningkatkan nilai peluang status yang dicari karena pengaruh status yang lain (status yang bukan status yang dicari), sehingga pada akhirnya status yang dicari akan memiliki nilai peluang tertinggi. Prinsip mekanika kuantum juga memungkinkan untuk berada dalam lebih dari satu status, dan melakukan lebih dari satu komputasi dalam waktu yang bersamaan.  
           Pada pencarian dengan probabilitas pada komputer klasik, peluang untuk status yang dicari akan meningkat sebesar 1/N setiap kali iterasi pada kalang for, sehingga dengan iterasi sebanyak N kali, akan ditemukan solusi dengan nilai peluang tertinggi. Kompleksitas algoritma ini adalah O(N).


      kamus
      function random (input N : integer)→ integer {random(N) mengembalikan nilai acak antara 0 sampai (N-1) } 

      function f(input r:integer) → integer {f(r) adalah fungsi boolean yang mengembalikan 1 jika r adalah solusi yang dicari dan 0 jika bukan solusi} 

      i,r,answer,N : integer 
              
      algoritma
        
         input ← N 
         answer ← -1  
         r ← random(N)  
         for i = 0 to N do  
            if f(r) = 1 then
       answer = r  
            r ← random(N);  
            
         output ← answer 

      0 PIS10-02_30110168_File Sharing / Jaringan Antar Komputer

      Selasa, 14 Desember 2010
      Jenis - Jenis Jaringan :
       <> WAN
         > Wifi Jangkauan 100-200 meter
         > Wimakes Jangkauan 50 KM
       <> LAN
         > UTV,STV
         > Kabel coacsial,antena
         > Fiber Optic

      Komponen Jaringan :
       <> LAN
       <> MAN
       <> PAN
       <> Internethttp
       <> WAN

      Membuat AD HOC

      Cara membuat server jaringan :
      1. Pilih Control Panel kemudian Network Connections


      2. Klik kanan Wireless Network Connection kemudian pilih Properties


       3. Kemudian plih add

      4. Isi Network Name(SSID) sesuai dengan yang diinginkan dan pilih Data encryption Disabled kemudian ok.

      5. Kemudian klik advance


      6. Pilih computer to computer

      Cara Setting IP address di sisi Server

      1. pilih Wireless Network Connections -> view available wireless Networks
       
      2. Pilih Change Advance Settings

      3. Pilih Internet Protocol (TCP/IP)->properties

       4.Pilih Use the following IP address-> isi IP address sesuai dengan gambardi bawah


      5. Untuk Mengecek server telah connect atau tidak dengan WIN+R, isi sesuai dengan gambar dibawah

      jika telah connect maka akan muncul seperti dibawah


      Cara Setting IP address di sisi Client

      1. pilih Wireless Network Connections -> view available wireless Networks

        

      2. Pilih Change Advance Settings

       
       3. Pilih Internet Protocol (TCP/IP)-> Properties


      4.Pilih Use the following IP address-> isi IP address sesuai dengan gambardi bawah


       5. Cek Connect atau belum dengan WIN+R isi seperti dibawah


      Jika telah connect maka akan muncul seperti di bawah


      0 PIS-10-02_30110168_SEPATU BENSIN

      Rabu, 08 Desember 2010

      Dalam jangka 10 tahun kedepan saya akan membuat teknologi masa depan yaitu sepatu bensin. Sepatu bensin adalah kendaraan otomatis masa depan dengan kecepatan sama dengan layaknya kendaraan bermotor.
      Kelebihan » Dapat mengurangi kemacetan, mempercepat perjalanan, bensin lebih irit dibandingkan     kendaraan  lain. Tidak banyak menghabiskan tempat.
      Kekurangan » Mahal. Jika sepatunya rusak kita bakal membutuhkan biaya besar untuk memperbaiki sepatu tersebut.
      Cara Penggunaan » 1. Gunakan sepatu
                                              2. Pijit tombol star di samping sepatu.
                                              3. Gerakan sesuai arah yang diinginkan.

      0 PIS10-02_30110168_RAM

      Jumat, 05 November 2010
      Hubungan RAM dengan Prosessor

           A. Versi Lama

          Contoh AMD < 949,708,m2,m2+,m3
          Cara kerja : Prosessor melewati North Bridge (Chipset) baru melakukan 3 langkah yaitu Address Bus (untuk menentukan alamat RAM),Control Bus(untuk mengontrol kinerja dengan instruksi-instruksi dan Data Bus(sebagai alat transfer atau yang mengantarkan data ke ram) setelah itu diteruskan ke RAM.

           B. Versi Baru

          Contoh Intel < 775
          Cara Kerja : Versi baru tidak perlu melewati North Bridge(Chipset) tetapi langsung dari Prosessor ke RAM karena Address Bus,Control Bus dan Data Bus telah terdapat dalam processor.

      Membedakan RAM
          Contoh:
          @ DDR1 --> frekuensinya 200Mhz, 400 Mhz dengan tegangan 2,5Volt
          @ DDR2 --> frekuensinya 533 Mhz,800 Mhz dengan tegangan 1,8Volt
          @ DDR3 --> frekuensinya 1024 Mhz dengan tegangan 1,5Volt

      Semakin tinggi tingkatan Ram semakin tinggi frekuensinya dan semakin kecil voltnya.
      Memilih RAM yang baik :
          a. Semakin besar Bandwith maka nilai RAM semakin baik.
          b. Semakin kecil niali Latency(Delay) maka nilai RAM semakin baik.

      Metode Pengiriman Data

      1. Single Channel = Pada single chanel ini dalam 1 PC dapat menggunakan 2 RAM yang berbeda    namun penangananya hanya menggunakan 1 jalur, sehingga penangananya lebih lambat.
      2. Dual Channel = Pada Dual Chanel ini dalam 1 PC harus menggunakan RAM yang sama dan identik, pada proses ini menggunakan 2 penanganan sehingga penangananya lebih cepat.


      1 byte = 8 bit
      64 bit = 8 byte
      Cara mengetahui Bandwith = frekuensi x 8
      Cara mengetahui Frekuensi = Bandwith : 8
      Cara mengetahui Clock Speed = Bus Bandwith / CL x BW (Bus Width)
      Cara mengetahui Bus Speed = CL x CS