Friday, July 1, 2011

Refresh Data pada JTable

Refresh Data pada JTable

JTable merupakan kelas pada Java dengan bentuk visual berupa grid yang digunakan untuk menampilkan data secara tabular. Kelas ini cocok digunakan untuk menampilkan data yang terdiri dari banyak kolom pada setiap baris.

Contoh penerapannya misalnya untuk menampilkan data dari tabel pada database. Data terdiri dari baris dan kolom.

 Kesulitan yang dialami programmer pemula biasanya saat akan melakukan refresh data pada kelas JTable tersebut. Bagaimana agar JTable otomatis melakukan refresh data saat data baru dimasukkan atau dihapus?

Kelas JTable memiliki metode setModel() untuk melakukan refresh data. Jika metode ini dipanggil, maka JTable akan menampilkan "model" yang baru atau refresh data.

Contoh penggunaannya adalah sebagai berikut:

tabelData.setModel(new DefaultTableModel(baris, kolom));

baris dan kolom bertipe array. 

Monday, June 20, 2011

Membuat MenuBar pada Aplikasi Java dengan Netbeans

Bagi seorang programmer tentunya cukup familier dengan yang namanya MenuBar, yaitu sebuah papan menu yang terdapat di bagian atas aplikasi. Beberapa menu biasanya dikelompokkan menjadi satu pada menu tertentu. Pertanyaannya sekarang, Bagaimana Membuat MenuBar pada Aplikasi Java dengan Nebeans?

Netbeans adalah sebuah IDE populer yang dikembangkan dengan bahasa pemrograman Java. Netbeans mendukung pengembangan Java, HTML, CSS, PHP, XML dan beberapa bahasa lain. Selain handal, Netbeans juga dapat dijalankan pada sisem operasi apa saja yang ada platform Java di dalamnya. Pengembangan aplikasi Java dapat dilakukan dengan mudah karena ada fitur drag-drop dan visual design. Contoh berikut menunjukkan betapa mudahnya Membuat MenuBar pada Aplikasi Java dengan Netbeans.

Langkah Pertama,
Buatlah sebuat project dengan jenis Java Applications dan beri nama AplikasiJavaJMenuBar.


Langkah Kedua,
Pada window Projects, klik kanan pilih New ---> JFrame Form. Pada class name isikan dengan TampilanUtama dan pada package isikan aplikasijavajmenubar.
Langkah Ketiga,
Pada window Palette, seret Menu Bar pada kategori Swing Menus dan letakkan pada Designer.
Untuk mengganti nama variabel, buka window Inspector dan klik kanan kemudian pilih Change Variable Name. Lakukan untuk jMenu1 dan jMenu2. Ganti nama menjadi menuFile dan menuEdit.




Menambahkan Menu Item
Untuk menambahkan menu item, pada window Inspector klik kanan menuFile pilih Add From Palette ---> Menu Item. Ganti nama variabelnya dengan menuNew dengan cara yang sama seperti langkah ketiga.
Untuk mengganti tulisannya, pada designer klik ganda menu item yang baru ditambahkan kemudian ganti dengan New.
Pada TampilanUtama.java masuk ke bagian code dan hapus metode main,

dan gantikan ke file AplikasiJavaJMenuBar.java. Tambahkan satu baris kode berikut:
JFrame.setDefaultLookAndFeelDecorated(true);


Jalankan dengan klik Debug Main Project atau klik CTRL+F5
Download code Membuat MenuBar pada Aplikasi Java dengan Netbeans.

Sunday, June 12, 2011

Pengaturan Locale Indonesia pada Java 6

Beberapa Locale baru ditambahkan pada java 6. Termasuk Locale Indonesia. Tambahan ini memudahkan programmer untuk melakukan Pengaturan Locale Indonesia pada Java, maupun pengaturan format tanggal dan juga pengaturan format jam untuk negara Indonesia. 

Cara menggunakannya mudah, contohnya:
 

package indonesialocalesetting;

import java.awt.EventQueue;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

/**
 *
 * @author UMAR
 */
public class IndonesiaLocaleSetting {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JDialog.setDefaultLookAndFeelDecorated(true);
                Locale inLocale = new Locale("id", "ID");
                DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, inLocale);
                String inCalendar = df.format(new Date());
                JOptionPane.showMessageDialog(null, inCalendar, "Indonesia Locale Example", JOptionPane.WARNING_MESSAGE);
            }
        });
    }
}

Hasil tampilannya adalah sebagai berikut:



Download Source code di sini.

Friday, June 10, 2011

Adsense Code Converter Using Apache Commons Lang

If you are interested in adsense, from google or the others of course is familiar with techniques to optimize the adsense. One way is to put adsense on the template. Is a powerful way to increase profits from advertising.

Blogger templates using XML language. If you want to put adsense on the template, you must convert it to XML by removing the <, > and " and replace it with < > "

With Apache Commons Lang become easier to do it. Examples such as my post earlier.

Screenshoot:
You can download this code here.

Thursday, June 9, 2011

Escape XML Using Apache Commons Lang - StringEscapeUtils

Apache Commons Lang has many tools to facilitate the Java Programmer to build a program. If you want to escape XML, Apache has StringEscapeUtils class to do so. For example:


    private String convert(String source) {
        String result = StringEscapeUtils.escapeXml(source);
        return result;
    } 


StringEscapeUtils have many methods to perform many activities of escape, such as XML, HTML, Java and others.

Friday, May 27, 2011

Menghitung Jarak Antara Dua Tanggal dengan DateUtils

Salah satu hal yang saya sukai dari bahasa pemrograman Java adalah banyaknya library yang dapat diperoleh secara gratis dari komunitas. Hampir semuanya gratis, walaupun ada yang berbayar jika ingin mendapatkan fitur tambahan.

Library untuk mengotak-atik tanggal dapat digunakan kelas DateUtils dari Apache Commons Lang, merupakan library untuk memberikan fungsi tambahan pada kelas utama Java. Misalnya String dan Date.

Studi kasus untuk manipulasi tanggal misalnya untuk memperkirakan kelahiran seseorang. Kelahiran seseorang dapat diperkirakan dengan mengetahui hari pertama haidh terakhir calon ibu tersebut, kemudian dihitung lamanya sekitar 4 bulan 10 hari, atau 40 minggu. Dengan kelas DateUtils cukup mudah melakukannya. Berikut contoh kode yang dapat digunakan:

Date perkiraanKelahiran = DateUtils.addWeeks(tanggalPertamaHaidh, 40);

Salah satu methode yang dapat digunakan adalah addWeeks().

Cukup mudah, bukan?
Bersama artikel ini saya sertakan program Kalender Kehamilan sederhana yang menggunakan library Apache Commons Lang. Programnya saya buat dengan menggunakan Netbeans IDE. Download, ekstrak dan buka melalui Netbeans dengan Open Project. Tampilannya seperti ini:

 Download source code di sini.

Wednesday, March 30, 2011

[Netbeans] Tutorial Membuat Gambar 2D dengan Netbeans

Pada tulisan sebelumnya saya pernah menulis bagaimana Membuat Aplikasi Desktop dengan Netbeans. Tulisan kali ini juga menerangkan bagaimana menggunakan Netbeans sebagai IDE untuk membuat aplikasi Java (walaupun saya kurang menyukainya ^_^).

Walaupun begitu, sebenarnya Netbeans mempunyai fitur cukup lengkap bagi Programmer Java untuk memudahkan membuat aplikasi, baik dalam skala kecil maupun raksasa.

Contoh berikut menjelaskan bagaimana menggunakan Netbeans IDE untuk membuat aplikasi penggambaran dengan Java 2D. Saya menggunakan Netbeans 6.9.1.

Langkah 1.
Buka Netbean Anda dan buat project baru dengan jenis project "Java Application"

Langkah 2.
Pilih folder tempat aplikasi dan ketikkan "Painting" pada Project Name. Hilangkan contreng pada Create Main Class.
Sampai pada langkah ini, maka telah terbentuk project kosong dengan nama Painting.

Langkah 3
Pada window Project, klik kanan Source Packages pilih New --> Java Class. Lihat gambar berikut:
Langkah 4
Pada Class Name, ketikkan WindowUtilities dan pada Package ketikkan belajar.java.

Langkah 5
Modifikasi kodenya seperti berikut:

public class WindowUtilities {

  /** A simplified way to see a JPanel or other Container.
   *  Pops up a JFrame with specified Container as the content pane.
   */

  public static JFrame openInJFrame(Container content,
                                    int width,
                                    int height,
                                    String title,
                                    Color bgColor) {
    JFrame frame = new JFrame(title);
    frame.setBackground(bgColor);
    content.setBackground(bgColor);
    frame.setSize(width, height);
    frame.setContentPane(content);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    return(frame);
  }

  /** Uses Color.white as the background color. */

  public static JFrame openInJFrame(Container content,
                                    int width,
                                    int height,
                                    String title) {
    return(openInJFrame(content, width, height, title, Color.white));
  }

  /** Uses Color.white as the background color, and the
   *  name of the Container's class as the JFrame title.
   */

  public static JFrame openInJFrame(Container content,
                                    int width,
                                    int height) {
    return(openInJFrame(content, width, height,
                        content.getClass().getName(),
                        Color.white));
  }
}

Kelas tersebut digunakan sebagai bantuan untuk menampilkan frame window. Agar otomatis melakukan import kelas yang diperlukan, maka klik kanan pilih Fix Imports.


Langkah 6
Dengan cara yang sama dengan langkah 5, buat class baru dengan nama ShapeExample. Kodenya adalah sebagimana berikut:

public class ShapeExample extends JPanel {
  private Ellipse2D.Double circle =
    new Ellipse2D.Double(10, 10, 350, 350);
  private Rectangle2D.Double square =
    new Rectangle2D.Double(10, 10, 350, 350);

  public void paintComponent(Graphics g) {
    clear(g);
    Graphics2D g2d = (Graphics2D)g;
    g2d.fill(circle);
    g2d.draw(square);
  }

  // super.paintComponent clears offscreen pixmap,
  // since we're using double buffering by default.

  protected void clear(Graphics g) {
    super.paintComponent(g);
  }

  protected Ellipse2D.Double getCircle() {
    return(circle);
  }

  public static void main(String[] args) {
    WindowUtilities.openInJFrame(new ShapeExample(), 380, 400);
  }
}

Langkah 7
Kelas utama pada program tersebut adalah pada ShapeExample (dengan ciri mempunyai metode public static void main). Untuk itu set main class pada project dengan cara seperti gambar:
Pada Main Class ketikkan: belajar.java.ShapeExample.

Langkah 8
Klik Debug Main Project atau tekan Ctrl+F5

Tutorial ini saya ambilkan dari sini dengan sedikit modifikasi seperlunya. File dari posting ini dapat didownload di sini. Download, ekstrak dan buka dengan Netbeans melalui open project.

Tuesday, December 28, 2010

[OOP] Bagian 1 - Inheritance

Pemrograman berorientasi objek atau dalam bahasa Inggris disebut Object Oriented Programming merupakan paradigma pemrograman yang berorientasi pada objek. Semua data dan fungsi dibungkus dalam kelas. Instan dari sebuah kelas disebut dengan objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Pemrograman dengan pendekatan OOP dapat dengan mudah dikembangkan, dirawat dan dimodifikasi.

Salah satu ciri bahasa pemrograman berorientasi objek adalah Inheritance. Konsep ini mengijinkan sebuah kelas didefinisikan sebagai turunan dari kelas lain. Dengan cara ini sebuah kelas dapat dibuat sebagai penjabaran dari kelas lain (induk) tanpa harus mengimplementasikan ulang fungsi-fungsi pada kelas induknya.

Sebagai contoh sebuah kelas Mamalia mempunyai ciri-ciri:
  1. Berkembang biak dengan cara beranak
  2. Mempunyai rambut pada kulitnya
  3. Pada jenis betina menghasilkan susu
Dari kelas Mamalia tersebut dapat dibuat kelas turunan sebagai penjabaran dengan ciri-ciri yang lebih khusus, misalnya:

*) Kelas Harimau yang mempunyai ciri-ciri
  1. Pemakan daging
  2. Mempunyai gigi taring
*) Kelas Sapi yang mempunyai ciri-ciri
  1. Pemakan tumbuh-tumbuhan
  2. Mempunyai gigi geraham
Kedua kelas tersebut, baik Harimau maupun Sapi merupakan turunan dari kelas Mamalia sehingga memiliki ketiga ciri-ciri dari kelas Mamalia.

Contoh penerapan dalam bahasa pemrograman Java adalah sebagai berikut:
Misalnya dibuat kelas Matematika sebagai berikut:


package umar.faisol;

public class Matematika {
    public int tambah(int satu, int dua) {
        return (satu + dua);
    }

    public int kurang(int satu, int dua) {
        return (satu - dua);
    }

    public double bagi(double satu, double dua) {
        return (satu / dua);
    }

    public int kali(int satu, int dua) {
        return (satu * dua);
    }
}

Kelas tersebut mempunya method tambah, kurang, bagi dan kali. Dari kelas ini dapat dibuat kelas turunan misalnya kelas Kubus, dengan definisi sebagai berikut:



package umar.faisol;

public class Kubus extends Matematika {
    public int volume(int sisi) {
        return (sisi * sisi * sisi);
    }
}



Kelas Kubus tersebut didefinisikan sebagai kelas turunan dari kelas Matematika dengan keyword extends, sehingga kelas Kubus tersebut selain memiliki method volume, juga memiliki semua method publik dari kelas induknya yaitu: tambah, kurang, bagi dan kali.


Untuk uji coba dapat digunakan cara berikut:


package umar.faisol;

public class TestOOP {
    public static void main (String[] args) {
        Matematika mat = new Matematika();
        Kubus kb = new Kubus();

        System.out.println ("Menggunakan kelas Matematika\n==============================");
        System.out.println ("mat.kali(3, 16): " + mat.kali(3, 16));

        System.out.println ("\n");
        System.out.println ("Menggunakan kelas Kubus\n====================================");
        System.out.println ("kb.kali(3, 16): " + kb.kali(3, 16));
        System.out.println ("kb.volume(16): " + kb.volume(16));
    }
}



Keluarannya seperti gambar berikut:




Source code dapat didownload di sini.
Matematika.java
Kubus.java
TestOOP.java

Wednesday, June 2, 2010

Mendapatkan IP Address pada Komputer Jaringan


Mendapatkan IP address pada Komputer Jaringan

IP address atau alamat Internet Protocol merupakan pengenal sebuah komputer pada jaringan. Tidak ada IP address yang sama pada satu jaringan.

IP dapat digunakan untuk mengenali sebuah komputer yang mengakses data pada suatu jaringan. Misalnya pada sebuah aplikasi multiuser ada proses penghapusan data, maka dapat diketahui dari IP mana penghapusan itu dilakukan.

Contoh mendapatkan IP pada aplikasi Java:



public static String[] cariIP()
{
    String[] returnValue = new String[2];
    String networkIP = null;
    String internetIP = null;
    try
    {
        Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements())
        {
            NetworkInterface networkInterface = (NetworkInterface)
              interfaces.nextElement();

            Enumeration addresses = networkInterface.getInetAddresses();
            while (addresses.hasMoreElements())
            {
                InetAddress inetAddress = (InetAddress) addresses.nextElement();
                if (!inetAddress.getHostAddress().equals("127.0.0.1"))
                {
                     if (inetAddress.getHostAddress().startsWith("192.168") 
                        || inetAddress.getHostAddress().startsWith("10."))
                    {
                        networkIP = inetAddress.getHostAddress();
                    } else
                    {
                        internetIP = inetAddress.getHostAddress();
                    }
                }
            }
        }
    }
    catch (SocketException e)
    {
        e.printStackTrace();
    }
    
    returnValue[0] = networkIP;
    returnValue[1] = internetIP;
    return (returnValue);
}


Nilai balik dari fungsi itu berisi 2 jenis IP, yaitu IP lokal dan IP publik.

Wednesday, April 7, 2010

[Applet] - Pentol Silang (Tic Tac Toe)

Nyantai dulu aah.. Refreshing main game yuk! Ini ada game pentol silang atau Catur Jawa atau Tic Tac Toe.


Selamat Bermain ya... Kodenya dapat didownload di sini.

Tuesday, February 9, 2010

Membalik Kata dengan substring() Methode

Kelas java.lang.String memiliki banyak methode untuk mengolah string. Untuk membalik string dapat digunakan methode ini untuk memotong string dari belakang, kemudian menatanya kembali.

Contohnya seperti kode berikut:


private String balikkan(String kata)
{
    String hasil = "";

    int panjangString = kata.length();
    int batas = panjangString;
    for (int i = 0; i < panjangString; i++)
    {
        hasil += kata.substring(batas - 1, batas);
        batas--;
    }

    return (hasil);
}


Hasilnya adalah seperti berikut
Unlimited Free Image and File Hosting at MediaFire

Source lengkap dapat didownload di sini.

Monday, February 1, 2010

Animasi Background

Animasi menjadi bagian penting pada sebuah program, sebagaimana perhiasan yang melekat pada seseorang. Contoh berikut diperlihatkan bagaimana membuat animasi background. Kelas ini dapat diaplikasikan pada JPanel, JFrame maupun JDialog serta kelas turunannya.

Berikut ini contoh menampilkan background secara acak.


package umar.faisol;

import java.util.Random;
import javax.swing.JPanel;
import java.awt.Color;

public class Pengacak extends Thread
{
    private JPanel background;

    public Pengacak(JPanel background)
    {
        this.background = background;
        start();
    }

    public void run()
    {
        while(true)
        {
            Random randomMerah = new Random();
            Random randomHijau = new Random();
            Random randomBiru = new Random();

            int merah = randomMerah.nextInt(256);
            int hijau = randomHijau.nextInt(256);
            int biru = randomBiru.nextInt(256);

            Color warna = new Color(merah, hijau, biru);
            background.setBackground(warna);

            try
            {
                sleep(10);
            }
            catch(InterruptedException i)
            {
                System.out.println(i);
            }
        }
    }
}
Cara menggunakannya adalah sebagai berikut:

package umar.faisol;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.EventQueue;
import java.awt.BorderLayout;

public class Background extends JFrame implements Runnable
{
    public Background()
    {
        super("Animasi Background");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void run()
    {
        JPanel panel = new JPanel();
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(panel, BorderLayout.CENTER);

        Pengacak pengacak = new Pengacak(panel);

        setSize(400, 300);
        setVisible(true);
    }

    public static void main(String args[])
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        EventQueue.invokeLater(new Background());
    }
}

Jika dijalankan program tersebut akan menampilkan warna panel yang berubah secara acak.

Source code lengkap dapat didownload di sini.

Thursday, January 21, 2010

Membaca File Excel

Ada beberapa cara untuk membaca file dari Microsoft Excel. Cara paling mudah menurut saya adalah dengan menggunakan library JExcelApi. Library ini memungkinkan baca dan tulis file excel menjadi mudah.

Berikut ini contoh membaca file excel dengan menggunakan library JExcelApi:


private void bacaFile(File file)
{
    try
    {
        Workbook workbook = Workbook.getWorkbook(file);

        /* baca sheet 1 */
        Sheet sheet = workbook.getSheet(0);

        /* mendapatkan jumlah baris dan kolom */
        int banyakKolom = sheet.getColumns();
        int banyakBaris = sheet.getRows();

        /* deklarasi header tabel */
        String[][] data = new String[banyakBaris][banyakKolom];
        String[] kolom = new String[banyakKolom];

        /* ambil data */
        for (int i = 0; i < banyakBaris; i++)
        {
            for (int j = 0; j < banyakKolom; j++)
            {
                Cell cell = sheet.getCell(j, i);
                if (cell.getType()  == CellType.NUMBER)
                {
                    NumberCell numberCell = (NumberCell)cell;
                    int angka = Double.valueOf(numberCell.getValue()).intValue();
                    data[i][j] = Integer.toString(angka);
                }
                else if (cell.getType() == CellType.DATE)
                {
                    DateCell dateCell = (DateCell)cell;
                    Date date = dateCell.getDate();
                    data[i][j] = date.toString();
                }
                else
                {
                    data[i][j] = cell.getContents();
                }
            }
        }

        /* tampilkan data */
        DefaultTableModel tableModel = new DefaultTableModel(data, kolom);
        display.setModel(tableModel);
    }
    catch(Exception e)
    {
        JDialog.setDefaultLookAndFeelDecorated(true);
        JOptionPane.showMessageDialog(null, "Error: " + e, "Error!", JOptionPane.ERROR_MESSAGE);
    }
} 

Cara tersebut menurut saya yang paling mudah. Setelah menampilkannya pada JTable, maka selanjutkan data dapat digunakan sesuai kebutuhan, misalnya memasukkannya ke database.

Kode programnya dapat didownload di sini.

Thursday, January 7, 2010

Membatasi Jumlah Record pada ResultSet

Saat melakukan kueri dari database, banyaknya data yang diambil dari objek ResultSet sangat mempengaruhi kecepatan dalam menampilkan data. Secara default, objek Statement akan mengeksekusi dan mengambil semua hasil kueri, kemudian menampungnya pada objek ResultSet. Jika ingin membatasi jumlah data pada ResultSet, maka cara membatasinya adalah melalui objek Statement.

Interface Statement memiliki methode setMaxRows(int max) yang digunakan untuk membatasi jumlah data yang dihasilkan. Setiap objek ResultSet yang dihasilkan dari objek Statement ini akan memiliki jumlah data maksimum sebanyak max.

Contoh penggunaannya adalah sebagai berikut:

            Connection con = DriverManager.getConnection(koneksi, "sa", "faisol");
            Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

            /* membatasi resultset */
            if (batasi)
            {
                int maxRow = Integer.parseInt(batas.getText());
                st.setMaxRows(maxRow);
            }

            ResultSet rs = st.executeQuery("SELECT * FROM Kabupaten");
  
Jika methode setMaxRows() tidak dipanggil, maka seluruh data dari kueri SELECT akan ditampilkan.

Kode selengkapnya dapat didownload di sini.

Monday, December 21, 2009

Hello World JSP

Java sebagai bahasa pemrograman paling populer saat ini bahkan sejak beberapa tahun yang lalu, menghadirkan solusi bagi programmer pada platform mobile dengan Java Micro Edition (Java ME), desktop dengan Java Standard Edition (Java SE) dan enterprise dengan Java Enterprise Edition (Java EE).


Pada lingkungan enterprise, Java menghadirkan servlet untuk merespon request dari client. Servlet merupakan bahasa pemrograman Java murni yang dikompilasi dan dijalankan di web server, sehingga untuk menggunakannya seorang programmer harus mempelajari bahasa pemrograman Java terlebih dahulu. Respon dari server yang berupa halaman HTML juga dimasukkan dalam servlet. Hal ini mengakibatkan campur-aduknya antara proses dan tampilan. Sebagai solusi, Sun menghadirkan Java Server Pages (JSP) yang dapat memisahkan antara proses dan tampilan.

Menggunakan JSP

Ada dua cara untuk menggunakan JSP. Pertama dengan memasukkan tag HTML ke dalam skrip JSP. Cara ini mirip dengan servlet dan Java SE versi konsole. Contoh:


HelloWorld.jsp


<%@ page contentType="text/html" pageEncoding="ISO-8859-1" %>
<%
out.println("<h1>Hello World!</h1>");
%>
Sintaks JSP dimasukkan diantara <% dan %>. Jika menggunakan Java SE pada aplikasi konsole, maka sintaksnya:

System.out.println("Hello World!");

Tampak keduanya sangat mirip, sehingga bagi programmer Java SE yang ingin mengembangkan aplikasi web dengan JSP sangatlah mudah beradaptasi karena sintaksnya yang mirip.



Cara kedua adalah dengan menyisipkan sintaks JSP ke dalam tag HTML. Contohnya:


HelloWorld.jsp

                <html>
                    <head>
                        <title>JSP Pertama</title>
                    </head>
                    <body>
                        <h1><%= "Hello World!" %></h1>
                    </body>
                </html>
            
      

Sintaks JSP <%= data %> digunakan untuk menampilkan isi dari variable data langsung ke layar. Cara kedua isi lebih familier bagi programmer HTML.Yang perlu diingat bahwa cara pertama dan kedua, nama file kesemuanya harus disimpan dengan ekstensi (
*.jsp)


Cara menjalankan

Contoh JSP tersebut dapat dijalankan pada Servlet/JSP container apa saja. Misalnya Glassfish, Tomcat maupun lainnya. Sebagai contoh ini digunakan Tomcat-6.0.20. Caranya ikuti langkah berikut:

  1. Ketik kode tersebut dengan editor text apa saja.
    Jika di Windows dapat menggunakan Notepad maupun Edit. Pada menu Run
    ketik notepad atau edit, maka akan muncul editor. Jika pada Linux dapat
    digunakan Gedit maupun vi editor.
  2. Simpan dengan nama HelloWorld.jsp pada direktori misal
    D:\web\HelloWorld.jsp pada Windows atau /home/umar/web/HelloWorld.jsp
    pada Linux.
  3. Buat file baru belajarjsp.xml dan simpan pada direkrori {install-tomcat}/conf/Catalina/localhost
  4. Isi belajarjsp.xml tersebut dengan baris berikut:
    <Context docBase="D:/web" path="/belajarjsp" />

    docBase diisi sesuai letak direktori utama data (berbeda di windows atau linux)
  5. Restart Tomcat
  6. Buka browser dan ketik: http://localhost/belajarjsp/HelloWorld.jsp
Selamat Mencoba!!!

Monday, November 9, 2009

Bagi-bagi Komponen StatusBar Gratis!!!

Bagi-bagi Komponen StatusBar Gratis!!!


Pecinta bahasa pemrograman Java yang ingin membuat aplikasi berbasis Java Swing dengan status bar berupa tanggal dan waktu, kini tidak perlu lagi membuat kode panjang.  Komponen atau library untuk membuatnya telah ada. Komponen ini saya beri nama jUmarComponent.


Komponen versi perdana ini memiliki satu kelas bernama umar.faisol.PanelJam yang kompatibel dengan JDK versi 1.4.2 atau yang lebih baru. Kelas tersebut berfungsi menampilkan hari, tanggal, bulan, tahun, jam, menit, detik secara real time.


Saran dan kritik dari teman-teman semua sangat diperlukan untuk pengembangan lebih lanjut. Permintaan penambahan fitur baru untuk memperkaya tampilan juga dipersilahkan.

Petunjuk menggunakan jUmarComponent


jUmarComponent adalah library yang disediakan gratis untuk pengembang aplikasi berbasis Java Swing. Pada versi 1.0 ini disediakan 1 kelas bernama umar.faisol.PanelJam yang digunakan untuk menampilkan hari, tanggal, bulan, tahun, jam, menit dan detik pada status bar secara real time.


Cara menggunakannya cukup mudah. Kelas umar.faisol.PanelJam ini merupakan turunan dari kelas javax.swing.JPanel, sehingga untuk menggunakannya layaknya menempelkan  kelas javax.swing.JPanel pada umumnya. Untuk contoh penggunaanya, ikuti langkah berikut:
  1. Letakkan file jUmarComponent-1.0.jar pada CLASSPATH
  2. Buat sebuah kelas turunan dari kelas javax.swing.JFrame atau javax.swing.JDialog
  3. Atur layout kontainernya dengan java.awt.BorderLayout.
  4. Buat objek dari kelas umar.faisol.PanelJam
  5. Letakkan objek dari kelas umar.faisol.PanelJam pada posisi BorderLayout.SOUTH.
  6. Atur ukuran window
  7. Buat visibilitasnya menjadi true
Kode selengkapnya sepeti contoh berikut:

Contoh.java

package programku;

import java.awt.BorderLayout;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;

import umar.faisol.PanelJam;

public class Contoh extends JFrame implements Runnable
{
    private PanelJam panelJam = new PanelJam();

    public void run()
    {
        setTitle("Contoh jUmarComponent");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(panelJam, BorderLayout.SOUTH);
        setSize(550, 300);
        setVisible(true);
    }

    public static void main (String[] args)
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        SwingUtilities.invokeLater(new Contoh());
    }
}

Jika dijalankan tampilannya adalah seperti gambar berikut:




Tampak sebuah frame dengan status bar berupa tanggal dan waktu. Selamat mencoba!

Download source code di sini.

Tuesday, October 20, 2009

Pembulatan Bilangan Pecahan (Round Double Data Type)


Pembuatan software tidak bisa terlepas dari operasi matematika. Baik yang sederhana maupun kompleks. Misalnya pada aplikasi jual beli, perpajakan, akuntansi maupun sistem informasi akademik mahasiswa. Java mendukung penuh operasi matematika mulai dari yang sederhana sampai dengan matematika kompleks dengan beberapa kelas pada paket java.math.
 

Sebagai contoh, misalnya untuk membulatkan bilangan pecahan dapat digunakan metode setScale() dari kelas java.math.BigDecimal.
 

Contoh implementasi:


package umar.faisol;

import java.math.BigDecimal;

public class Bulat
{
    public static String bulat(double angka, int koma)
    {
        String returnValue = "";

        try
        {
            Double angkaDouble = new Double(angka);
            BigDecimal bigDecimal = new BigDecimal(angkaDouble.toString());
            BigDecimal hasilBulat = bigDecimal.setScale(koma, BigDecimal.ROUND_HALF_UP);

            returnValue = hasilBulat.toString();
        }
        catch(ArithmeticException ae)
        {
            returnValue = ae.getMessage();
        }

        return (returnValue);
    }
}


Penggunaannya dapat dilakukan pada kelas Main:



package umar.faisol;

public class Main
{
    public static void main (String[] args)
    {
        System.out.println("3.14446 = " + Bulat.bulat(3.14446, 2));
        System.out.println("3.15556 = " + Bulat.bulat(3.15556, 2));
    }
}

Keluarannya adalah:

3.14446 = 3.14
3.15556 = 3.16

Download source code di sini.

Thursday, October 8, 2009

Mendapatkan Home Directory

Home directory merupakan direktori utama pada setiap user. Path direktori ini selalu berubah/berbeda untuk setiap user dan untuk setiap sistem operasi. Bagaimana agar program Java yang dibuat menjadi portable untuk setiap sistem operasi dan untuk setiap user? Misalnya untuk meletakkan setting program atau hal lainnya.

Java memiliki kelas System yang terdapat pada paket java.lang. Pada kelas ini terdapat methode getProperty() yang dapat digunakan untuk mendapatkan Environment Variable, termasuk home directory, Desktop atau lainnya.

Contoh berikut digunakan untuk mendapatkan user home directory.



public class GetHomeDirectory
{
    public static void main(String args[])
    {
        try
        {
            String homeDirectory = System.getProperty("user.home");
            System.out.println(homeDirectory);
        }
        catch (Exception e)
        {
            System.out.println("Exception caught =" + e.getMessage());
        }
    }
} 

Keluaran dari program tersebut selalu berbeda untuk setiap user dan setiap sistem operasi. Misanya untuk linux keluarannya adalah:
/home/umar        jika nama usernya adalah umar.

Jika pada windows vista keluarannya adalah:
C:\Users\Umar      jika nama usernya adalah Umar


Selamat mencoba!

Friday, September 25, 2009

Multithreading (bagian 2) - Animasi Jam dan Titlebar

Pada posting sebelumnya sudah diperlihatkan cara menggunakan thread pada aplikasi Java. Kali ini akan diperlihatkan bagaimana menampilkan 3 thread sekaligus dalam satu aplikasi. Thread pertama adalah thread utama pada kelas Main. Thread kedua digunakan untuk menampilkan animasi titlebar, dan thread yang ketiga digunakan untuk menampilkan waktu (hari, tanggal, bulan, tahun, jam, menit dan detik) secara real time.

Penggunaan thread utama pada kelas Main dan thread untuk animasi titlebar sudah dicontohkan pada posting sebelumnya. Untuk menambahkan informasi waktu secara real time, ikuti langkah berikut:

Pertama, buat kelas baru turunan dari kelas JPanel dengan mengimplementasikan interface Runnable, misalnya dengan nama PanelJam.

Kedua, buat dua buah objek dari kelas JLabel dengan nama labelJam dan labelHari. Objek labelHari digunakan untuk menampilkan informasi hari, tanggal, bulan dan tahun, sedangkan objek labelJam digunakan untuk menampilkan informasi jam, menit dan detik.

Ketiga
, atur kedua objek JLabel tersebut sedemikian rupa sehingga tampilannya pas.

Keempat
, buat pengulangan tanpa batas (infinity loop) dengan menggunakan for atau while pada methode run. Buat objek dari kelas GregorianCalendar dan inisialisasi secara berulang-ulang serta ambil property hari, tanggal, bulan, tahun, jam, menit, detik secara berulang pula pada loop tersebut.

Kelima, tampilkan property dari objek GregorianCalendar tersebut pada labelJam dan labelHari pada setiap loop.

Kode selengkapnya adalah sebagai berikut:

package animasititlebar;

import javax.swing.JPanel;
import javax.swing.JLabel;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;

import java.util.GregorianCalendar;
import javax.swing.border.LineBorder;
import javax.swing.border.BevelBorder;

public class PanelJam extends JPanel implements Runnable
{
    public PanelJam()
    {
        super();

        /**** Jam ****/
        JPanel panelJam = new JPanel();
        panelJam.setLayout(new FlowLayout(FlowLayout.RIGHT));
        panelJam.add(labelJam);

        labelJam.setFont(new Font("Monospaced", Font.BOLD, 16));
        labelJam.setBorder(new BevelBorder(BevelBorder.LOWERED));

        /**** Hari ****/
        JPanel panelHari = new JPanel();
        panelHari.setLayout(new FlowLayout(FlowLayout.LEFT));
        panelHari.add(labelHari);

        labelHari.setFont(new Font("Monospaced", Font.BOLD, 16));
        labelHari.setBorder(new BevelBorder(BevelBorder.LOWERED));

        setBorder(LineBorder.createBlackLineBorder());
        setLayout(new GridLayout(1, 2));
        add(panelHari);
        add(panelJam);

        threadJam = new Thread(this);
        threadJam.start();
    }

    public void run()
    {
        GregorianCalendar waktu;
        String detik;
        String menit;
        String jam;

        String hari;
        String tanggal;
        String bulan;
        String tahun;

        for (;;)
        {
            waktu = new GregorianCalendar();

            /* hari */
            int hariInt = waktu.get(waktu.DAY_OF_WEEK) - 1;
            hari = HARI[hariInt];

            /* tanggal */
            int tanggalInt = waktu.get(waktu.DAY_OF_MONTH);
            if (tanggalInt < 10)
            {
                tanggal = "0" + new Integer(tanggalInt).toString();
            }
            else
            {
                tanggal = new Integer(tanggalInt).toString();
            }

            /* bulan */
            int bulanInt = waktu.get(waktu.MONTH);
            bulan = BULAN[bulanInt];

            /* tahun */
            int tahunInt = waktu.get(waktu.YEAR);
            tahun = new Integer(tahunInt).toString();

            /* detik */
            int detikInt = waktu.get(waktu.SECOND);
            if (detikInt < 10)
            {
                detik = "0" + new Integer(detikInt).toString();
            }
            else
            {
                detik = new Integer(detikInt).toString();
            }

            /* menit */
            int menitInt = waktu.get(waktu.MINUTE);
            if (menitInt < 10)
            {
                menit = "0" + new Integer(menitInt).toString();
            }
            else
            {
                menit = new Integer(menitInt).toString();
            }

            /* jam */
            int jamInt = waktu.get(waktu.HOUR_OF_DAY);
            if (jamInt < 10)
            {
                jam = "0" + new Integer(jamInt).toString();
            }
            else
            {
                jam = new Integer(jamInt).toString();
            }

            labelJam.setText(" " + jam + ":" + menit + ":" + detik + " WIB ");
            labelHari.setText(" " + hari + ", " + tanggal + " " + bulan + " " + tahun + " ");

            try
            {
                threadJam.sleep(60);
            }
            catch(InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    /***********************/
    private JLabel labelJam = new JLabel();
    private JLabel labelHari = new JLabel();

    private String HARI[] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum`at", "Sabtu"};
    private String BULAN[] = {"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"};

    private Thread threadJam;
}


Jika dijalankan hasilnya adalah sebagai berikut:





Download source code lengkap di sini.

Monday, August 24, 2009

Multithreading (bagian 1) - Animasi Titlebar


Microsoft dikenal sebagai siatem operasi multitasking, karena sistem operasi ini memungkinkan beberapa aplikasi berjalan secara bersamaan. Misalnya, sambil mengetik dokumen di Microsoft Word, dapat dilakukan sambil mendengarkan musik dengan Winamp. Istilah multitasking ini biasanya diberikan kepada sistem operasi yang memiliki kemampuan menjalankan beberapa aplikasi dalam waktu yang bersamaan.

Istilah multithreading diberikan untuk level aplikasi. Misalnya aplikasi Winamp. Saat kita mendengarkan musik atau melihat film di Winamp, pada titlebar ditampilkan tulisan judul lagu yang bergerak, waktu yang telah dilalui dan juga waktu yang tersisa serta jam sekarang. Kemampuan sebuah aplikasi menjalankan beberapa proses sekaligus inilah yang dinakaman multithreading.

Bahasa pemrograman yang mampu menghasilkan aplikasi multithreading
dinamakan bahasa pemerograman multithreading, misalnya Java, Visual Basic dan Delphi.

Penerapan multithreading pada Java.

Contoh penerapan multithreading pada Java misalnya aplikasi dengan tulisan pada titlebar yang bergerak yang akan kita bahas sebentar lagi.

Ada 2 (dua) cara menerapkan multithreading pada aplikasi Java.
Pertama, dengan membuat kelas turunan dari kelas java.lang.Thread
Kedua, dengan membuat kelas yang mengimplementasikan interface java.lang.Runnable

Sebuah aplikasi Java setidaknya harus memiliki satu thread, yaitu thread untuk menjalankan aplikasi Java itu sendiri. Untuk kasus animasi titlebar ini, terdapat dua thread, yaitu thread untuk mengubah titlebar dan thread untuk menjalankan aplikasi itu.

Pada aplikasi animasi titlebar ini misalnya kita menerapkan dua cara penerapan thread, yaitu membuat kelas turunan dari kelas Thread dan yang satunya dengan mengimplementasikan interface Runnable.

Thread pertama untuk menganimasi titlebar, buat dengan membuat kelas turunan dari kelas Thread, misalnya sebagai berikut:

package animasititlebar;

import javax.swing.JFrame;

public class ProsesTitleBar extends Thread
{
public ProsesTitleBar(JFrame titleBar, String judul)
{
this.titleBar = titleBar;
this.judul = judul;

start();
}

public void run()
{
String tampung1, tampung2;
int ambil = 0;
while(true)
{
tampung1 = judul.substring(0, ambil);
tampung2 = judul.substring(ambil, judul.length());
titleBar.setTitle(tampung2 + tampung1);
try
{
Thread.sleep(1000);
}
catch(InterruptedException i)
{
}
ambil++;
if(ambil == judul.length())
{
ambil = 0;
}
}
}

/*********************************/
private JFrame titleBar = new JFrame();
private String judul = new String();
}
sedangkan untuk thread utama digunakan implementasi dari interface Runnable, misalnya berikut:

package animasititlebar;

import javax.swing.SwingUtilities;
import javax.swing.JFrame;

/**
*
* @author Umar Faisol, S.Si
*/

public class Main implements Runnable
{
public void run()
{
System.out.println("Animasi TitleBar...");
JFrame.setDefaultLookAndFeelDecorated(true);
new AnimasiTitleBar().setVisible(true);
}

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Main());

}
}
Hasilnya adalah sebagai berikut:


Download Source code AnimasiTitleBar.zip