Friday, August 25, 2006

Pindah Rumah

halo... saya sudah pindah alamat ke http://ed.realbox.org

trims

Monday, May 23, 2005

Membuat File Manifest

Manifest File di Java digunakan sebagai informasi identitas aplikasi dalam sebuah archive, terutama Java Archive (JAR).
Manifest File merupakan file dengan format text.berisi informasi dari aplikasi yang
Akan didistribusikan dalam JAR.

Dengan file manifest, anda tidak perlu menjalakan aplikasi dalam JAR dengan cara manual, dalam sistem operasi Windows cukup double click pada file dengan extension .jar
Manifest disimpan dalam file dengan nama MANIFEST.MF dalam direktori META-INF.
Berikut contoh dalam sebuah file manifest,


Manifest-Version: 2.0
Merupakan informasi versi dari file manifest

Main-Class: org.idekreatif.javatips.UsingSwingMenu
Merupakan informasi dari nama class utama yang akan dilaunching oleh Java Virtual Machine.

Name: org/idekreatif/javatips/
Merupakan susunan direktori package.

Sealed: true
Menunjukkan apakah class utama harus berada dalam satu paket JAR atau tidak.

Class-Path: servlet.jar infobus.jar acme/beans.jar
Menentukan library-library tambahan untuk aplikasi yang akan di-run oleh aplikasi.


Berikut ini adalah informasi tambahan mengenai aplikasi anda.
Specification-Title: "Judul Spesifikasi Aplikasi"
Specification-Version: "1.0"
Specification-Vendor: "Perusahaanku, Inc.".
Implementation-Title: "Programku "
Implementation-Version: "versi Programku"
Implementation-Vendor: "Perusahaanku"

Sunday, May 22, 2005

Swing : Membuat DataGrid dengan JTable

//JTable di Swing fungsinya mirip dengan DataGrid di VB/Delphi
//di JTable anda dapat mengisi data dengan
//array 2 dimensi atau vector dalam vector
private JTable _newTable;
public Vector dataRecord = new Vector();
public Vector columnName = new Vector();
public UsingTable(){
super();
init();
addColumn();
addRecord();
_newTable=createTable();
//mendefinisikan ScrollPane untuk Table
//ScrollPane sangat penting agar Table
//Dapat menampilkan nama kolumn dan scroll atas/bawah
JScrollPane apane = new JScrollPane(_newTable);
_newTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
this.getContentPane().add(apane);
}
protected void init(){
this.setTitle("Membuat Table dengan JTable");
this.setSize(600,400);
}
//mendefinisikan kolumn
private void addColumn(){
columnName.add("Kolom 1");
columnName.add("Kolum 2");
columnName.add("Kolum 3");
}
//menambah data kolumn dengan vector dalam vector
private void addRecord(){
//ini vector item yang menyimpan record
Vector aitem = new Vector();
aitem.add("record1kolum1");
aitem.add("record1kolum2");
aitem.add("record1kolum3");
dataRecord.add(aitem);
aitem = new Vector();
aitem.add("record2kolum1");
aitem.add("record2kolum2");
aitem.add("record2kolum3");
dataRecord.add(aitem);
}
//mendefinisikan JTable dengan constructor (vector,vector)
public JTable createTable(){
JTable newTable = new JTable(dataRecord,columnName);
return newTable;
}

Thursday, May 19, 2005

Swing : Pertukaran Data Antar Frame

Seperti halnya pada bahasa pemrograman visual yang lain (VB/Delphi), anda dapat men-set nilai dari variable yang berada di form lain (public variable/attribute).
Bedanya dengan VB/Delphi anda harus mendefinisikan variable yang bisa diakses antar Frame/Form dengan "static". Harus diingat bahwa Frame/Form yang memilik variable tersebut harus sudah diinstance sebelumnya.

contoh :
pada Class FormA -> public static String dataTest=null;
pada Class FormB -> FormA.dataTest="Test 1";

Wednesday, May 18, 2005

Swing : Membuat ToolBar

//Toolbar adalah kumpulan menu-menu dengan icon sebagai shortcut
  //dari bagian aplikasi
  //Toolbar di SWING merupakan kelompok dari JButton, anda harus
  //mendefinisikan dulu button, kemudian tambahkan button tersebut
  //ke dalam Toolbar
  JButton button1;
  JButton button2;
  JToolBar toolbar;
  public UsingToolBar(){
    super();
    init();
  }
  private void init(){
    this.setSize(400,400);
    this.setTitle("Membuat ToolBar");
    //definisikan toolbar
    toolbar = new JToolBar("It's MyToolBar" );
    //anda dapat men-set apakah toolbarnya bisa floating 
    //atau tidak, secara default adalah true
    toolbar.setFloatable(true);
    //membuat button dengan method createButton- lihat 
    //di method createButton
    button1 = createButton("icons/more.gif","test1");
    button1.addActionListener(this);
    button2 = createButton("icons/hurufA.gif","test2");
    //menambahkan button1 dan button2 ke toolbar
    toolbar.add(button1);
    toolbar.add(button2);
    //menambahkan toolbar pada container.
    this.getContentPane().add(toolbar,BorderLayout.PAGE_START);
    //this.getContentPane().add(button2);
    
  }
  //method membuat button, mengurangi peng-kodean yang berulang-ulang
  public JButton createButton(String respath,String tooltip){
    //mengambil resource path dari file icon
    //format icon dalam bentuk raster (gif,jpeg,tif,bmp)
    String filepath=this.getClass().getClassLoader().
        getResource(respath).getPath();
    //mendefinisikan icon dengan interface Icon dan subclassnya ImageIcon;
    Icon aimgIcon = new ImageIcon(filepath);
    JButton button = new JButton(aimgIcon);
    button.setMaximumSize(new Dimension(24,24) );
    //menambahkan tooltip pada button;
    button.setToolTipText(tooltip);
    return button;
  }
  public static void main(String[] args) {
    UsingToolBar aframe = new UsingToolBar();
    aframe.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
               System.exit(0);}
        });
    aframe.pack();
    aframe.show();
  }
  
  public void actionPerformed(ActionEvent e) {
    if (e.getSource().equals(button1) ){
      JOptionPane.showMessageDialog(this ,"Halo","Coba Dialog"
          JOptionPane.INFORMATION_MESSAGE);
      
    }
  }

Swing : Button dengan Icon

JButton button1;
  JButton button2;
  public CreateButtonIcon(){
    super();
    init();
  }
  private void init(){
    this.setSize(400,400);
    this.setTitle("Membuat Button Yang Memiliki Icon");
    //mengatur layout
    FlowLayout alayout = new FlowLayout(FlowLayout.LEFT,1,1);
    this.getContentPane().setLayout(new FlowLayout());
    //membuat button dengan method createButton- lihat 
    //di method createButton
    button1 = createButton("icons/more.gif","test1");
    button1.setMaximumSize(new Dimension(10,10) );
    button2 = createButton("icons/hurufA.gif","test2");
    //menambahkan button pada container.
    this.getContentPane().add(button1);
    this.getContentPane().add(button2);
    
  }
  //method membuat button, mengurangi peng-kodean yang berulang-ulang
  public JButton createButton(String respath,String tooltip){
    //mengambil resource path dari file icon
    //format icon dalam bentuk raster (gif,jpeg,tif,bmp)
    String filepath=this.getClass().getClassLoader().
        getResource(respath).getPath();
    //mendefinisikan icon dengan interface Icon dan subclassnya ImageIcon;
    Icon aimgIcon = new ImageIcon(filepath);
    JButton button = new JButton(aimgIcon);
    //menambahkan tooltip pada button;
    button.setToolTipText(tooltip);
    return button;
  }
  public static void main(String[] args) {
    CreateButtonIcon aframe = new CreateButtonIcon();
    aframe.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
               System.exit(0);}
        });
    aframe.pack();
    aframe.show();
  }

Tuesday, May 17, 2005

Swing : Layout Manager #3 - GridBagLayout

//GridBagLayout adalah layout manager yang mengatur komposisi
  //dari komponen dengan aturan dasar grid tetapi lebih fleksibel
  //Dengan GrigBagLayout anda dapat menyusun komponen tidak 
  //harus dengan aturan rata kiri-kanan atau dalam acuan 1 kolum,dsb
  //Anda memerlukan class GridBagConstraints sebagai pengatur posisi
  private GridBagLayout alayout=null;
  private GridBagConstraints aconstraint=null;
  public UsingGridBagLayout(){
    super();
    init();
  }
  public void init(){
    alayout = new GridBagLayout();
    aconstraint = new GridBagConstraints();
    this.setTitle("Contoh Menggunakan GridBagLayout");
    this.setSize(400,400);
    this.getContentPane().setLayout(alayout);
    //GridBagConstraints.BOTH - menresize komponen secara
    //vertikal dan horizontal
    aconstraint.fill=GridBagConstraints.BOTH;
    JButton button1 = new JButton("Tombol 1");
    JButton button2 = new JButton("Tombol 2");
    JButton button3 = new JButton("Tombol 3");
    JButton button4 = new JButton("Tombol 4");
    //men-set constraint ke setiap button
    alayout.setConstraints(button1,aconstraint);
    alayout.setConstraints(button2,aconstraint);
    alayout.setConstraints(button3,aconstraint);
    this.getContentPane().add(button1);
    this.getContentPane().add(button2);
    this.getContentPane().add(button3);
    //GridBagConstraints.REMAINDER - menentukan bahwa komponen
    //yang diset adalah komponen terakhir, bila ada 
    //komponen selanjutnya
    //maka komponen baru tersebut diletakkan di baris baru.
    aconstraint.gridwidth=GridBagConstraints.REMAINDER;
    alayout.setConstraints(button4,aconstraint);
    this.getContentPane().add(button4);
    //gridheight digunakan untuk menentukan jumlah baris 
    //  yang "diambil" oleh komponen
    //gridwidth digunakan untuk menentukan jumlah kolom 
    //  yang "diambil" oleh komponen
    aconstraint.gridheight=2;
    aconstraint.gridwidth=1;
    aconstraint.weighty=1.0;
    
    JButton button5 = new JButton("Tombol 5");
    alayout.setConstraints(button5,aconstraint);
    this.getContentPane().add(button5);
    aconstraint.gridheight=1;
    aconstraint.weighty=0.0;
    aconstraint.gridwidth=GridBagConstraints.REMAINDER;
    
    JButton button6 = new JButton("Tombol 6");
    JButton button7 = new JButton("Tombol 7");
    alayout.setConstraints(button6,aconstraint);
    alayout.setConstraints(button7,aconstraint);
    this.getContentPane().add(button6);
    this.getContentPane().add(button7);
  }
  
  public static void main(String[] args) {
      UsingGridBagLayout aframe = new UsingGridBagLayout();
      aframe.addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent e) {
                 System.exit(0);}
          });
      aframe.pack();
      aframe.show();
  }

Thursday, May 12, 2005

Menyimpan Data Text (line based) ke File

//sebelumnya kita telah membahas mengenai membaca file text
  //sekarang bagaimana dengan menulis filetext dengan format 
  //yang telah ditentukan
  public static void main(String[] args) {
    String filepath=WritingTextFile.class.getClassLoader().
      getResource("datafile/listmhs.txt").getPath();
    System.out.println("filepath:"+filepath);
    try {
      FileOutputStream aoutstream = new FileOutputStream(filepath);
      //Gunakan DataOutputStream untuk menulis text String dengan methods writeUTF
      DataOutputStream dataout = new DataOutputStream(aoutstream);
      //menyimpan data ke stream
      // \n digunakan untuk line entry/baris baru
      //gunakan kreatifitas anda untuk menyimpan data dari tiap-tiap field
      dataout.writeUTF("01#Adi#Jl.Mahasiswa\n");
      dataout.writeUTF("02#Aman#Jl. Kebangsaan\n");
      dataout.writeUTF("03#Amin#Jl. Mulia\n");
      //men-force stream untuk disimpan ke file;
      dataout.flush();
      System.out.println("Writing Data Done!");
    catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    
    catch (IOException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    }
    
  }

ASCII ke Char dan Sebaliknya

//setiap character memiliki nilai ASCII
    //di Java untuk mengubah character ke nilai ASCII
    //anda cukup melakukan casting ke tipe int dengan (int)
    //untuk sebaliknya casting  dengan (char)
    char a= 'A';
    int aint= (int)a;
    System.out.println("nilai ASCII dari a : "+aint);
    System.out.println("character dari bilangan aint :"+(char)aint);
    

Saturday, May 07, 2005

Swing : Layout Manager #2 -GridLayout

//Seperti halnya FlowLayout, GridLayout merupakan turunan dari LayoutManager 
  //untuk mengatur posisi komponen
  //Bedanya dengan FlowLayout, GridLayout mengatur komponen dengan komposisi 
  //baris dan kolum seperti sebuah bentuk table
  //yang dipecah merata dengan jumlah baris dan kolum tertentu
  
  public void init(){
    this.setSize(300,300);
    //definisi Gridlayout dengan memberikan nilai baris=4, kolum=4, 
    //spasi horisontal=5, spasi vertikal=5
    GridLayout alayout = new GridLayout(4,4,5,5;
    this.getContentPane().setLayout(alayout);
    this.getContentPane().add(new JButton("1"));
    this.getContentPane().add(new JButton("2"));
    this.getContentPane().add(new JButton("3"));
    this.getContentPane().add(new JButton("4"));
    this.getContentPane().add(new JButton("5"));
  }
  public UsingGridLayout(){
    super();
    init();
  }
  public static void main(String[] args) {
    UsingGridLayout anew = new UsingGridLayout();
    anew.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
               System.exit(0);}
        });
    anew.show();
  }

Swing : Layout Manager #1 - FlowLayout

//Dipemrograman Java anda tidak akan menemukan method atau attribute yang 
  //mengatur komponen secara pixel seperti menentukan berapa pixel left 
  //dan berapa pixel top,
  //Sebagai pengantinya Java menyediakan LayoutManager untuk mengatur posisi
  //masing komponen.
  //Berikut ini adalah contoh penggunaan 
  //FlowLayout(LayoutManager yang sederhana)
  //FlowLayout adalah turunan dari LayoutManager yang mengatur komponen 
  //dengan cara mengurut dari kiri-kekanan, posisi tengah 
  //atau dari kanan-kekiri.
  //FlowLayout cocok digunakan untuk mengatur button dan komponen text.
  public UsingFlowLayout(){
    super();
    init();
  }
  public void init(){
    this.setSize(300,300);
    //mendefinisikan FlowLayout dengan 
    //mengatur posisi start component, dan jarak antar komponen
    //posisi start component dapat diset dengan LEFT, CENTER dan RIGHT
    FlowLayout aflow = new FlowLayout(FlowLayout.LEFT,10,10);
    this.getContentPane().setLayout(aflow);
    this.getContentPane().add(new JButton("1"));
    this.getContentPane().add(new JButton("2"));
    this.getContentPane().add(new JButton("3"));
    this.getContentPane().add(new JButton("4"));
  }
  public static void main(String[] args) {
    UsingFlowLayout anew = new UsingFlowLayout();
    anew.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
               System.exit(0);}
        });
    anew.show();
  }

Wednesday, May 04, 2005

Swing : Pengenalan Swing #2 - Menu PullDown

//konsep membuat menu pull down pada Swing
  //urutan definisi komponennya sbb :
  //1. buatlah JMenuBar
  //2. buatlah JMenu, tambahkan komponen JMenu pada JMenuBar 
  //  dgn method add()
  //3. buatlah JMenuItem, tambahkan komponen JMenuItem pada JMenu 
  //  dgn method add()
  //deklarasi component
  private JMenuBar jJMenuBar = null;
  private JMenu jMenuFile = null;
  private JMenu jMenuHelp =null;
  
  private JMenuItem menuOpen=null;
  private JMenuItem menuExit=null;
  private JMenuItem menuIndex=null;
  private JMenuItem menuAbout=null;
  
  //constructor class;
  public UsingSwingMenu() {
    super();
    initialize();
  }
  //initialisasi component-component
  private void initialize() {
    this.setJMenuBar(getJJMenuBar());
    this.setSize(300,200);
    this.setTitle("JFrame");
  }
  //mendefinisikan Menu Bar
  private JMenuBar getJJMenuBar() {
    if (jJMenuBar == null) {
      jJMenuBar = new JMenuBar();
      jJMenuBar.add(getJMenuFile());
      jJMenuBar.add(getJMenuHelp());
    }
    return jJMenuBar;
  }
  //mendefinisikan Menu "File"
  private JMenu getJMenuFile() {
    if (jMenuFile == null) {
      jMenuFile = new JMenu("File");
      menuOpen = new JMenuItem("Open");
      menuOpen.addActionListener(this);
      menuExit = new JMenuItem("Exit");
      //menambah  menu item pada Menu "File"
      jMenuFile.add(menuOpen);
      jMenuFile.add(menuExit);
    }
    return jMenuFile;
  }
  
  //mendefinisikan Menu "Help"
  private JMenu getJMenuHelp() {
    if (jMenuHelp == null) {
      jMenuHelp = new JMenu("Help");
      menuIndex = new JMenuItem("Index");
      menuIndex.addActionListener(this);
      menuAbout = new JMenuItem("About");
      menuAbout.addActionListener(this);
      //menambah menu item pada Menu "Help"
      jMenuHelp.add(menuIndex);
      jMenuHelp.add(menuAbout);
    }
    return jMenuHelp;
  }
  
  public static void main(String[] args) {
    //mengeset format tampilan window standar java
    JFrame.setDefaultLookAndFeelDecorated(true);
    UsingSwingMenu amenu = new UsingSwingMenu();
    amenu.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
               System.exit(0);}
        });

    amenu.show();
  }
  
  //tempat eksekusi method dari event  component
  public void actionPerformed(ActionEvent e) {
    if (e.getSource()==menuOpen)
      JOptionPane.showMessageDialog(this ,"Ini Hasil Klik Menu Open","Halo", JOptionPane.INFORMATION_MESSAGE);
    
  }

Monday, May 02, 2005

Menggunakan Map/HashMap

//HashMap adalah class implementasi dari Map, Map itu sendiri adalah  
    //interface yang mempunyai fungsi untuk memetakan nilai dengan key unik. 
    //HashMap sangat bermanfaat sebagai memory record management, dimana  
    //tiap record dapat disimpann di sebuah Map, kemudian setiap Map 
    //diletakkan pada vector, list atau set yang masih turunan dari Collection 
    //Demikian pula Hashmap sangat baik untuk menghandle resultset dari hasil query 
    Map arecord= new HashMap(); 
    arecord.put("id","1001"); 
    arecord.put("nama","Adi"); 
    arecord.put("alamat","Jl. Ahmad Yani 22"); 
     
    //mengambil data map dengan method get() 
    System.out.println(arecord.get("id")); 
    System.out.println(arecord.get("nama")); 
    System.out.println(arecord.get("alamat")); 
     
    //Meletakkan map ke vector 
    Vector mhsList = new Vector(); 
    mhsList.add(arecord); 
    //menambah record 
    arecord=new HashMap(); 
    arecord.put("id","1002"); 
    arecord.put("nama","Aman"); 
    arecord.put("alamat","Jl. Kebangsaan 88"); 
    mhsList.add(arecord); 
     
    //mencetak virtual table (vector mhsList) 
    for (int i=0;i<mhsList.size();i++){ 
      System.out.print(((Map)mhsList.get(i)).get("id"+"|"); 
      System.out.print(((Map)mhsList.get(i)).get("nama"+"|"); 
      System.out.println(((Map)mhsList.get(i)).get("alamat"+"|"); 
       
    }

Sunday, May 01, 2005

JDBC : Select/Query/List Table Record

//jangan lupa import java.sql.*;
      //deklarasikan koneksi database
      Connection conn=null
      try
      {
          //definisikan driver untuk Database Mysql,
          //setiap Database mempunyai driver yang berbeda-beda,
          //kunjungi situs Database yang anda gunakan untuk mendowload JDBC Driver
         Class.forName("org.gjt.mm.mysql.Driver");                                                                                
        //Setting connection, ingat setiap database mempunyai model konfigurasi URL yang berbeda
         conn = DriverManager.getConnection(                                    
               "jdbc:mysql://localhost:3306/testDB",      
               "root",                                                   
               "root");                                                  
                                            
         //Definisikan statement
         Statement stmt = conn.createStatement();     
         //Definisikan query beserta ResultSet sebagai buffer hasil query
         //khusus untuk SELECT anda harus menggunakan method executeQuery,
         //untuk INSERT,DELETE,UPDATE anda harus menggunakan method executeUpdate
         ResultSet rs = stmt.executeQuery("SELECT * FROM Table1");         
               
         //menampilkan hasil, perulangan sampai end of records                                       
         while(rs.next())                                                       
         {                     
           //mengambil masing-masing record, anda bisa menggunakan method lain
           //selain getString, seperti getInt, getDouble, getFloat
          System.out.println(
          rs.getString("ID"" || " + rs.getString("NAMA"));    
         }                  
         rs.close();
         stmt.close();
      }                                                                         
      //menghandle Exception
      catch(SQLException e)                                                     
          {                                                                         
           System.out.println("SQLException: " + e.getMessage() );                                     
          }                                                                         
      catch(ClassNotFoundException e)                                           
          {                                                                         
           System.out.println("ClassNotFoundException: " + e.getMessage());     
          }                                                                         
      finally                                                                   
      {                                                                         
         //Clean up resources, menutup koneksi                         
         if(conn != null)                                                       
         {                                                                      
          try                                                                 
          {                                                                   
             conn.close();                                                    
          }                                                                   
          catch (Exception ignored) {}                                        
         }                                                                      
      }